<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/%E8%BF%AA.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/%E8%BF%AA.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"zhengyidi.github.io","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":"flat","style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="设计模式 - 创建型 - 工厂模式">
<meta property="og:type" content="article">
<meta property="og:title" content="09.工厂模式">
<meta property="og:url" content="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/09.%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/index.html">
<meta property="og:site_name" content="Zhengyidi&#96;s 学习记录">
<meta property="og:description" content="设计模式 - 创建型 - 工厂模式">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-07-11T00:00:00.000Z">
<meta property="article:modified_time" content="2021-11-13T14:58:22.502Z">
<meta property="article:author" content="zhengyidi">
<meta property="article:tag" content="设计模式">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/09.%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>09.工厂模式 | Zhengyidi`s 学习记录</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/atom.xml" title="Zhengyidi`s 学习记录" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">Zhengyidi`s 学习记录</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">休对故人思故国，且将新火试新茶。诗酒趁年华。</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/09.%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="zhengyidi">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Zhengyidi`s 学习记录">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          09.工厂模式
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2021-07-11 00:00:00" itemprop="dateCreated datePublished" datetime="2021-07-11T00:00:00+00:00">2021-07-11</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2021-11-13 14:58:22" itemprop="dateModified" datetime="2021-11-13T14:58:22+00:00">2021-11-13</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" rel="index"><span itemprop="name">设计模式</span></a>
                </span>
            </span>

          
            <div class="post-description">设计模式 - 创建型 - 工厂模式</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="Oh, this is an invalid password. Check and try again, please." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">
  <script id="hbeData" type="hbeData" data-hmacdigest="7d365c2f2d5523598f78f04b71cb78eced15230796abb4ea3d5d648a1b8e9cf8">22064b17c03cb0c0e58c99349b6889d034aacf52913338f228640f323ca3190da6887d39ad0c89b9aebc6f1a5e984a2177c84c3053601a42103c79cfd83b9154dd715cd5f2effbf6022cfa0ad066e7ce7d63b3965699862ed5aa73f5f3583baf1350288e19f6230a1c9bc6ddfce165810016fddcb632fa92e66137e56b03cacdc114e08209654d672a9fd918dac402d03c428fabcd7b1433d534b06aa2b93ed093e004c59468bd89d96d4a204ac44a4c432e405144e0fff9f80736de9b8dca84ff1750a6e62c86699d804487ada5570ca4b81028824aa0b7013ea336585ef052219a58c3f881635590e2214b7e553e1d34844366df558c5e7a7749e14171f985f7d4e3f5bc29a15228c92bac529184da0c7929d9a25e79373257941cde403e9a02cb75048897dddf737cec6abc8e952ceaac553123366d779dd7291921d3903b020b613c4f4bfc2f50f0a3cd634829a5494a8cc6cca56a5f11fbc21319e1f666334e997e5e568fd33f34634bd5d6d987acc08c7ff853cfdc53bee26b30cb014b2c6b714ee2be09af92406c02cd9bce9b458379c52dce9df9c8c3b8836caca02a3c7d44ff9d8cb49c6841e9910366d10ba62706d76ab966191ebf38d82ffff88bf6901f61e7615402ba7cafdc7b509a2e46c65322d3dc92c18bd08238ba1fc480daec627832eb3ad5387bb0ae9127690d075a200bbc3ec3ee210eba6cea02b047e039e8ce0a2f7e961f866fefe7c298a09acc9acf88d2b18e4e357a57023d66140453a56973153c7db051e5b8d9cad6f6dcbe9edc1284fd0a735aadd62ea2ee6c10f33b2d7c0c62c2e8b393391f6fb347937761d17f9ba347a78bae62ba1a72a08d0285d8c38c1eaf43fd45748b0e76abd91ad36cc1e74e618bb415cbe1badb5f247bdb8fcfd6699e9090318cfea28f47d756ab89c44c8b5e90fc481c7a0150eec627ef0f49442ba60237713d266f3643b3c7eff9b7bb16d740ccf86a3425f84cb79a4e7bae94508f872f06ef4a338e6badb005de68cafd8360eb8a79cf0bfc25fbf508db53d648fde76bec57093fe79a225047179e9674bd52f03fd0d1531e0bfdfef0b37fa7c8309fa4d97e6c4f80816822d15467f8f5f0717d1524e6c0de26f345d2f9e6daf0e05200485868123fc37053cdc312fff24b2143f94b7adc7b3fa5c3614d69fba5f20af128b885f90cc79b2e2c686ae1ffdee30a70ddba181ee1b4e68d30c685fc22875548396501bf875dea064643919e67995943503e9c4d459d95c1e35a5d768a05106e33999beb8ee465116cbb03402656f11185f7236b334988eccb228895ec9d421cc754bc6f447fdae7f2c7b0b3166d32f2e79b1ce661feaeacfc5fabad01a8dd8125bacbda96b53853f8afc7e5ddd749688c7d5065eb281a3526b2c50eeb0808469626d5bb7d62fdf7a202ef9a1b1384d2caa9066a8c39addc5c15e107ba56c58584743648175ae984fa9f81b4d7c276cfc9c05c65b6fa9e38d1ae7f4584274873e20c0fa5abc41f088a65928e4b19ce38d4fa5ff7319041989065935b1a3bc2612c15b9567c45a4cc4d2af72ad2f04f430e7bee23955e2c41af50cf7e95ffce66bcbd51d7b809535f47fe9f678dc93a1fae9a50f5fc765b92b65df94f2d6e5c4eafdef7d927857f776b0232e57d4a659db91fa80a608d0571074284090f86fa73e788ca184dbeba6080d9dd22f700e1bad45d60004d3e562b2b9ed58bd0ebedf712f8375f1675b6c775ceeba6cee949fcbce67368b47a569420ff4aef11c0f70b7f2a98818d468024b83d78f010040baf151d46cafaf12d18387442526f4f7bfbc5ed4c447f0f5abbfb6e4fae1745ed7831331e5d785fb49f09505956e610f46e5270a292c06d851b86b9a554aa2557fc9b3062686612eab499c5b7dc83492b7382c9c58f0486109595c7a9daf6168b70894e8d1895e58f21a822cf688798ab5c912606006d58dc4d2f09872a94ef8a71f0e5cf69381b8b3b5467b2355e5c4cd6bc652f3180700da5dd50a7092e44aa7fbbc3b63c3edcce62341fbbffb382c42c649e9330a16ec02f7d71e1aec9af7760012257852f5baa9944006166661b673cc331d59c1e686258c98934daa32e11741ab039ea668bfedb02e1c9326922a717855164a3446034e89fa4efb10cea7e87ea2bbeacba6953f41e3dbbc8e4bcaffd0fc4095ca6a589e6b0fa943b63f22ab79093a48c533c7ebd04c21d2e1b79479de12a93dd23a2efe19c94bb764e455a95065cd9748a89e277c7fd17bae1fae3996ce9eb41dd6e859a9a56c5ce1ec024a406a686ffbc62053d7d591f2053aec0f1c8d1cfbd198462c926d21e9517215584d73453b3735c6e46072b4f4a4ca9bf43d3b843d169ba27603087cfc04b6e94d3c714871fa4dbc2b684455783b1dcd9325088ac2a8b1394bd198f29b9caca533987c333602443a1e964a27e146a4fdd4f6f29a2a50ea4fb952fdde2daedf28d8c7a65855d271e072cab275240a3be540af3a02e91225b79d25354af0c33df0685c8785e45d55bcd83efb445a77ee6523897893a02a819074dc047a9b41775f0e499b324d9dbbc1f6bd19d213610ba095b6738acbb2df53db574ec625a7fcd39e901568c46adfd4e3742cf817a5d65270db16460b4a3508f0be2343341ef8b7c7cda29ad1857b72dc5aa76a45a2df57632397a18f53fd1421d8f9fac90fba77036c36d66f9d582f087cdc0e24b489dc35f05f4934911128a5d7651a1365d21beef466daf037bdde5b22a45a1557d444ecdf893b72430f28b2c79eb5b7bd280725671afa7955d8fbe98137fda26152d3d3e87192740a4c4e1479fc61c180823c8bd1544212e43e06dae393ee6ea077f5e73a1eeee0baaebef4bde2983665b9ba1db397fe7dc5dc736e3b22485c72e6741d3bfe270e308830c16faa6d001b9ab1ffb038d585fb66e39ab12ae23386e002bce57852a6ed4fb297ba970da36c7f8653f44bcac0b0ff5ee7fbae2324695ff5e230739c96d00f1a7e66a1a5bb780d5a6d62bc8423dc8dbe5afd124cbdc3f887930062f7d88622da601255eaca67d0db89840d3a249fc138fdd7f5f04532b21be11cb17f73e0140a77643ebb75234f4e2ea8a6cf45616e181695eba0f4e7ba6e22d964de56003dc7b62ad7f7c32e301d8766e565434ab44edc3f0213134678bfcc1b6a9c917c97e7a7504de6afd5d127a68a3c7392da6c949467cdaba441b39b5a5cff0f6b02a684fb49e22fc75ae0f0dbf37b886f6e0578f7116a7ef141cdc575a3278f4947dc7543688ec51021a38ded9a3d44b78d95f2b4d4ce8dc587bd0527759e882824ef59eab353de2f7940df1c8c7e051d3ba65a229be083954ee65d2e666f7e570416afd8afc0d7f70da21138d3d7bfd0fcf4d4b6fcae83867ca86d6367dbafaa40f10e39a149333cc3dfc81a8b8614960acb9dbac1ad4a35470b1b1592748221e2490e32f5156d1ea3bac45de1ab82b9ed0438960b1376aa7dca84b1e2e688703601bfc465d20af5c86311ff79a07500afea1f14087aad2da8076e56e0baaa3c964de319d98f46113f5cca939845720f04b29f6dec4c7720f0f28ef293e0f1df2194b49405ad79a2fe578bcf129ee373e3add0b3d9cef1e16a3f92f7e7294ee7719debd0b3807ffeb7a1f423e5ce220edb154f1a5b591eb17389e77de69a4e2b91155443a68309556fb65b7c17408b9bbdeb11689348eb4685986aba7e8111041345e92e87392d2d756fcaccad21c11927364cab1570f13f74d44d50ad447dc33d0391557c7c82924883f11fc611bfdf04106f44b469bc9159764f915ee7b1673d4b573892682714f35de821f53a2baf5b0d733b366257a50c90ea17fdad29ba4c0fb54e277511b4b4dd882656df244ab4bf73cbb8478d50074a85f40a3d9161bec80b025bdb1e32bec9406f6159c5a49c75af3000afa4ec919c24dd44cc154b480d4bfe1a4a774772dd1192da71f429400ab60524e8ec3044696666367172d389fe0b809e528eb544c10aee9f9e78b5b8a13d4b399f62b182a09e181ed32b2dfd927e539ca435a01c2cc857542e3619d029b0a945fd50989529458614f6a60b82070bc2df98151af8243c06826a4d54172cf2ba670d4e103ffa6baad03f53e54ebdd8861a16262665c0cd9c1ca6ebfec919afc9517bf30e9f6804bc7e34f5c321f80ceb19d5feb70bed75d6e02b7d8ca5c18ec11deec9becaa08e37237db307414fc87d16b869d17a8140c3f2da086e844b978d6ca2292543e4a6cd0e2ffc559a0f0c2bda585b323372d941cf90e212f889044c6d3dadc10eb1615a35ecb8781a1bf3bf352156fd3e2816079d4b8c374408f3ddc84986bcf0bc9f31eda25794ee8951b9f6d5d39db5c62bbc0eb3e87187a1374c1d8475919897e5eac251c1f3d30e56d105d7139ea37e81154e8c741080305327526634e406b11761629998dbf89fa28d50dd836af43e5f8b48345a2de2f4a5480e0bda55fe7c91b6fcf0fb19229ddcd2d3cdca8a90fea94b4235124e5e883814c52ce76864f3831a3f7c5bd882f7a8902fa43c616c4f124b45e24954e98119db6164abfb5bf2b77f97a05a37f81a27c2ba2e885c0a73d5ddd6bf6df785d11927c961f56404d6c8169a0acb7bb79447791c8ad57449d594df6b0fbe30d86f943899696671ac346c4a9be0cd4c5080a6d708d5fbb48ac3f5f8e2e3722397121c4bf64c710134887cd319768e7096927513c5ed54f1a65575770ff20e885a3153d441cea169efacb17c476145a075a7f189f0c87bc88cef349b5dff15105fb5351c7cd527aa83810b6bbee7cec12b3fa4d29b8bc88042f2beaa201d6513f5ae58c39f900bc41340a0ccfa0b3692931211252109ea733cd55e1a9c203990b6b4ca6392acb45b38ed20ec7f7aa128cd16129386bc570f3b6867bf042e8885ee8410749e9cfd538c58448b4065e41f0e9e6c20a6d653f7c43aa8f7b8af9a999d8c284c6e325d7cd9e0d52eb8ad29128093cbbc587cc7a12459a168ba7178993d975901fba52268248e18d56dc16a10e02eeabb10c749e8af6456f1654a94ac754ffd10fa82ec8c85b70d7649e52ec87f6c8ea714fec35c4809a2d806e4cfdb31844d71e452494ad386518dad5a13e92337fcc23920b345b59708286e821b3044e99cab92eaf205a00514c24a642efa549a077198bfc0b840038aa6c61374710b723e05e754f2b1f9d1b3f92de3b3eb6a34e052fef7232648b0fa2cb74a32f83091a5602996550574330d59eb74923133767b80a8edac9ec6e9d7d11a5f59654bd659e25ee1228280ffcfaf75de1a5ebb5e1af0f2bd995a2bbc00ff8b43757d4a5006e5ce64ea726ac4348b71629fce801735b00d8f837ef3a2ef26a80fc280b4a95e065d98219f17c7b403c6479a959108c684cce6bf838f071917f780659890919b8bc34af48d8850770e11fb4567a8282c80c1cee70b199be461512f5bfe789e99c8b595017be02a95cb94bdeae9a43a38ab8fa5a1fd73b75eba86b5ad860c6810f42f1994f567789ddf3d1e39ea982983928daa5f6f47d543cd5e197fb1cb17b4c2e4697c1968c9728fa97cbe1de029a138075097ef1bf552e7e763f17ea6fa30370fe9cef4cc1deb1699c2e6292f2e1d2144cf57ac93a87b78ce42cf90c3a40f94a917c83781c40e57b41b23cbee3b52a3c8517d2129186ef38607d67319c71b232262cad5d4667e3c3a768030b5a03389f8e1ed07c8a999cf5e7b07d4cca6c68dfb19a86edc6c3e092f20b7826a1fd33e4c7a661f6a9dade4e96b23ae6e3196cdd9d2d24ac663f8313d333af47fcce62a165ba9e24688fb1a24f0cf971d0f96e67f8e4936d7b9311de30bf30b698ad0f1712ba9b81761a9e55e90729bf94cb6a177a5ee232391fc5822116ba1c1742a500e69b7ee3fa5bd777bf59faf8790452481fb6f5f181144bb2e981bf476a1516976090edd6ba64d5f43288400db36e29247da48292d2fe8dce5fb7554592bc493d9d045c59105f7abc96695184df9ae14074c494676dee4a12c9564dc160d61350cb880f2c0c25f9ca9e97acea0239f7cefd822743824be25358157b714f1adfc9174948670c724a8ac7cf9f8f5c93c659926e78fade135410d3d3d96ca4ef32f75a381e5ed5399723198926a3a981242a6da92c14013c098b7733d77ba10c0c52e0abc705e269bfa69d8f8a3b01dd7922f5ad7f63c7ed8f7056ae45788cf1596bac3f440d3c6913a8f646c08e4ce09305931020bb0f3b07f6cbe19c895a4f153a588672c309add5e621ce470fbffb792b3f9ebcd9f4baf0de04a674e4a6af51a5ebdd3604cdf6ad1420fdad67c138588ada6cda21af04283b405b0135763492b642e7d267a90f9d89f4c443776dabb7af7584911ae3377718764ce047b416166a1aab6c9d45978a1bc58a486de327467b4b46d59ec8cae8f49ec4ad752a5daf62167cc70ea90c600faf97bb6ce350567f9fcc2cfe69c5d726adc288bc2fc9984085b523b014e7c44fd878fca433145bc6608aa94dd06adf61d7a56e08c1353c2a58b510e26cff41c71a8741d49766a4cd15a4d5eedbd09fdac792ae46c36b383c5b406c95af0542ccf6168d72e5eb9e36a35726220fe5dbdd9dc9b47db84f56c7abf16ad907052acbad2aa68a116086094807931df5c5deaa657fab66deb5e429031e3583b8b791b1e8d8b8256952306802f0172479d16ec59c092a3c5f33af381442baf63e1b8c274ce4fbc1f92f170f211baf7217248c05ef0d43e1adf1135573f28336ee3918a142aa68dbfff9ad98fc225767f1ac1334b9988a23a4919ea09122a0ce9dd8385a1e972e1e4596fe99f1777d2164266ec5d46b02c5fe4819d089d287d4f0fc0f33dd116548d0a3d19ad9cf5a0cf080b1d0d7f23741e36729f6bea26a56dfa98083f66d5fb01bc166230c60a561b615fe2a262282dfccf33c0162e517c9baf49c891d5149f1b2cd563ea6e8dba0673db5eadead34fb185eee842e3862ffcb36a614e1f22a8b5724e0531a23e38bf951538dce9140fe2065b6028110f1a48e48783b3718ab87d868bb2e7f1126b9d0ff23da109bb80989599776293a48ee179bb0f62f7c53df4fe2a9babf7a558fb024dec46a53acb31fdf0bcfe1bd898dd2665c53d3674a3dc190a0d3da3df1dff8f3c63d066a171d2057d0df4f53eb5b554470380e825ed91265f3c247161f1618f854defd5e07f9a0032a5c47c26c332c8777da9115a77645864102fcde30dbfdb766f75e20e187e539f19d9d2bd8313c210032d02ea9b68123af4f8f6e5df7b71fda7458ee020ffc2d54fe4cfc0e0674a263866b3bd3798bc38d2175bbd69e4dd670adc32a0d9f4da6407a9d6c7996536c1d0ad46520f7b511555c6e02e7964448414c33f07e9887d167a3dcc1e09f4ebb242dd7ebb416a3e160c77df9f6c7dfcaa3d478bd6427e3be80f12089eb04510fe543487a28561689b075016bd09794ba7ae8405a57427dde93152880aed0b7266edff421db0e4eb540d93bb124dd33a486fbfea6a8a4628013276bc09de27a2b6e5c51a9380d669f39859de03ba4ee052d0c1728cb18fc6242f1ebc26d7e74a5d7b1b3e72e38b739b5de0fa165cd59cf2f26fa839842a8d055f0eb89d46dca8f81cd60b906c1b6bc83b5cb7462fa6de8be4629ac196a0ccbb0cb94b2f88af7d1fb778ea33ba0d82cf70b0c015f893cdd59a90631da6a5e899b26ed061b1bc9d186d5765a45f6639c6fbf20e7a57cdaf6b8d9d81f247e877336f7bc9dcc20aef075c0fb98af5303e1beb3f1e09638c270e926306d417ac41bebb8431d4de7ccecdd7171c975f0886f0150c749a743628777569428155f5e9b0b82b6993d6785cc91b36cc5023c6982bdc7f6d5e569b80911e3cadd54a200ffd2e992c6c2fba11976cddab2c38c31fb4d9b025025240b7138e15e973c0da1600c9d1baffca24b5e6194860e8bd62e1c417430a5faa50826135a95779affd0b21eb0805e6043542651f1331265889d9761e7847e2922aee771c076c7239e95abd3771ae752df95cadfc695c9c1cc031516f616d064dbe557c984c9d2a50012784577da6b111b6c412a521e09be55f8de36b03658e695036ffd7105dd9cd8e7eeaaa010029e374658ece2b02f79d75abb89d092f40bf4e0e8726401b4d4cec71589f9a97c1382ee14b27fb2675c362c4c5b550426f71ba08bd4c42efb630a4fc1a94ffba5dc1060a000fb6c98c6c47d4a107e49df93b85820f6499e9a98272548eddbbd23cfa4a857ed233576e93b7e17b166f1a0712740550278642bd5bcf772df8e9a4947cb5ebcb7cd8cc99286bf08b0bace3846485331f84d66deb00ff48a438b3692ecb3b3bf193a1b452b16d2c9cb9f776e61f1556c4b424ccda6a16dc5d526c1e274456121ca96aa345da5f902b091fe62ef6eb10b0d75ea940f6f89f92ad16efe23ad96a1d1c989f11119d50e41f7074c81a273e1afdf64bfdec9ab294ae15a01d3e5ebccbea91735358491d09d991df0f410735ccb4899e5d99dfac03ffc1352c192d8b5aa9740654cf996b6b0f1edfa996386aab21a87e045479152f809b1ae431ba942d91ce51a9c11cdb43c2e668092cbb52d5fa013b388d03789be1f9399d5827a65e4546880617a0776ac0e373e3dcd0a218e5d5e4b682086e4b8c437a437ac8bb5218e767d83904ccb2da711352b6fa69dba8cc68a2e92d29b98f44fb97801ad021a1cd212df8767b28c47acc8ac26d03a0e1453a66422cd71a67defeeb7b73ae573994b0921922b59a95e6ef5038bfa1d880a1952c7fe82e9ef0bd1734088719854c61df4b47aabe17a3ddeafe50c2cdc659fcb829cbb130fcf5776a586e3d2c1fbce4c8e12b50c31af661d057635e80a1543ab614f91e3202b6f5384d279b4fcd6fc5fe347f42b223f8365e882b833f99385cb6d6c7c8668fb180b53688c79665a8dbb6b2c87b289856da334a0b77c5940d3eeb83f9c6f27c8f1567c208df6cd5aa11814fd3f95e93363107730b2f459c937b6f58c142615ad6aa780b225ad51458514adb262ce48e082a99affd79b22ed2f5cb325c65ee0b2708e0318c44583167374907e92b4e360a7a5c1d8239763a0ddd7c6dd93565571370282ae3dee8adc4fc3dd07b04bc036fdba3bdc302ef2b3e449caf4d96a0f2b0652a98d5055ed0ceb4c7f5e0609197120d6d31c393f355f85164706acda30b3fae687da5988e70af258e1c5238e62d62376f489b57568f00c867ebf2b183f7c4712c120461b515a14ac72485b3aebd28a38f5d63a71cb7f01b2f436468fa470b835a8fe22c0da09846c9e6d0c8fd963dd5947854b3231da5ba00fbc08e731c95a47010153d7bfc9757b652f4fbae36f85659e1c4d1af451f60ff553e5dde11dab5a859e3fe22e8ac3351e6b1ed06e7ea5b957781f595b55013b616b680f8b6466ec87663aacb17cbc3a77c080d5c75dd433e20e92254b4b8b59e04f8681f199efd3a9f3055e5c257546372364e134741b87168c946db1340dec20b7cccbdd2a311e0369ea94a533613fbfe7e97890fc62ab4777c5d61d927928639fb7cfa2104bf5e97ca66bcb9cd45d73e074887e452b56472197a075a1d6c74af47e67011207e5d6edfc963a2523ac6dd9f276cae9638c3e81d3ef6eed6cf155eec8d7030bee218f471632e1da07b24a88baa362cd934f35d20850df3979965cd1aeaab60d7c6ef5771e19a61f54da00b90bd2e39f34676abdcf6804d934a6bba9c27c93d32a200a7be0534472fb44684aa804e6a446e47a617514dcba6be08539e0024c9787791da34a65906049a6341d396b4beec3a5073010922c62aff43fc2b6dc0d0a2897cd6735afc5eb07cf93f23716e40b1e3ed6d86c3d5878d241fa8dd623b3afe6655214f642e000a3c6c5afb9dbb9421a41ebc85d4a853595890bf57f69301c6eabef7f2265f1b86ad2fbeae0d5a1061cac79b811029e097e3c1b87c073a4d22883b36f6eac21611d55770a65b6e3ab9cf573d5b125f7b8e79fbb5377897c7b155e82e306f5ca816f87810c313f9f2e93e182e2dc67fe8448f57c9755d7cc2a97156f7907ce7c7154d639536723c805daf637bd2b710a8f9900dd1dece10ee46a21ce329faa95161520e97ab732a817379316344d2e70bc741bbadb863692d2900678ba69783aae2bee6a679f71a3fb303e6630c41a1748acb631b5e501efd9fbd8389468bb6292a7ee6d1ba7b775c925d29d8ccc9dd92a8aac6c38cf2496da8444f6adcc11a1b5c9b2c17eaf3ed3c6e4d1680114903b72b2f6d763693d81afbb767e3d5906650eaf5697c3943e0618bd82f5222a5597c7c6bad48be1488d1851bb3e35126d72c719a03b2cea6408cfd4888d86dbe18fb64bc94d3207bc512d5e73cb1241d3031b7c55f246aed2d88afa2192f234b7e82b4a801adadaa32bec52cb6d9eef9313334cf8dc0732381ddbe10559e0a0e00abd90733b0bf65a10946dbad8fb7dfb42e3a895806322c3137ca3a0c2bb6479ee6bb32bbda3afb12e9115e9bb5b1e92cdc1089717618543bf0eb99fe7d8b8bf33cbb7fc4d6ccb27b062d7f9b8e3e5be8ae445b12b6a4e387b62a698f9095b5807369bfdeaa890617715e2175e9f8c0929afce7e3e173d6d8805c637cfb67ac690bbcd71107054dbf7e262f30e94958868773e6eb613cf3e9fefe15ede6895a0a57586266f9042b1b0ae7848c820a48a9b5fae31ae72698e040882fe3e87e825bf340338f0b69d618636d6308538f4840cb1a3a4fe51d39b8c5030130955222278a407751827d1c75bee38b8d24c2b3d964461ad80a1cb42cb253b5a1e1c2fdb3e790eafb3361252f419ed98e01542a13f07dd67c37792f3dd2b78ee6cdcd8b539d567b1821b22ee2a2a072347c7e7b5d029da0d9f7c1a2b7cb8b4947d4016d325bdac4f8e8f526b4f3b9559be8a73a61ad02e244a5360d760ef1fc3d731669f3207a2fcf152f322b9b48da55f194235813eb3936cd777c21c5c64e42aa1ea9621840c6dd8f654e52af845895d58ef65da7ab431368a4e77af82243eefaabab9e955588acd0e027fedf91d8f56137824ce0e047debad134659a1a62ddc9f38722e6c53e0b5f093787e94e4606dfbda5983954051fa2ba779c5e3f62b591726ce6556d0588f42f91decc01ef920f3978b91fc0a3ec5b6ee88d90527dee6c784ece134d569c73bac3ee4716bcdfa3f004ab621d4984b4011ecf4c1a8a648fc22d9764fe16eb2b56ed2a2ae49f3276900f0273c1367ea9095c1127ea6f7456b3f6c572be1c0ac3b63011317ab14179429e4fab7f3f7ef9abb932ecef5aec8bd25d6754af5124659f77e3a9ce04c75e39178b342f4a6cd0f18230d5424391fc56a2e46d6b07b274d1a7cf41ccced527d2a21a207da8d48187fd81e5472d383446e697fa1d03d6b3f6a988a9133d734564383bce2ff1b3a2de878641f7a91eee2ddb3b5c51ca31dd8395f12250eb5d7635a898c760c60b5a1f0c0a4728f428a2c576a7b66de1fd0aea095c00e75b370e3ead363112c41e75c6a2174a6cda6d9986eae1e05c6fad0d1813cc2b0fb83b8b53f447ec765c9cd65391d5c8bd3057c7fd91283fcfc19ab9f1b3943d3e821b460faf95270ecf38e63a6a0f98b7a1630328833622ee420fc050783f61444b14a42e069e597b9584d2f860e211c3155e034a9dd497e53e5bf753f96663763eadc83008e29f6d7526d5e11550558627e35f0e014b83ed97cf25c10b0a9e7e4417834d541fcd52b7f82f531ec2cc5e5f9eea501e41585fc8391f24e69c464a32747fd45fd46ac7caea0a76979a2381bdbabdb5c8553f4bbf45644a1045c51ce1c9e4cb7df620a9ea5fa5e1f8d34a43f1c318daa610e8a3f3d40e34413216f53a9aeee27b189f4159d5ee53289ab7a661272dd0219524ea7a3695df6388d08c602036c20ab0d29af8b811ed99a1d51b7cdb44e10578be4be38d03d21d31bc4309f9fd00fe3a697cc1226a82ecfb7ab27aa632b7d1d1db96640f3f04532582230c54245c9e76dfbce51ca1e6973db051849d1d76ff6b5a677f37b207dfce1a99be19d0a3a57e6321ad8134b509d7da013f9f929bed6b380c5cfc2921f4d4f43b42a96317c279196340eeebe1db09f39c647607f462d3bad10dbd41d4b58f9a82cd1519f80949e05e55446823439bee54343eee69da5b852b3421fe275dbc2281d3e001082dfaee9a2db8251ae2e18f0c79ecea4a6aa74adfe880760d78dc947eea591a64bbc884cbb4f8865e1fe8dfdd1b2bc9562969d54a06bea95e47eba7376f1a6e9e2abe53242c7cbe7755b7fd7313f566cd8ac1ad02ecbdfaa97b01aaf79dddaa285655c1c1c28a83f8008ebf87084fca5fbea77dadc55144ecc04d8703b6ab90cebfc792ed7008124ca3106646e87f75e23cee554df8802e3e87fa94235317b42f9cdbb0f98ba413ec984fe6499023db3786a9c3baa6733721339ccda0879fe5dc813bd3fbe6c19664ca26fdc8fcf27bdfe111c9f52ef3555281e76dc473cfee54a4fcea876da99f07bb8ad2f71f12b486bd5a4c9d9a32c2ba80521151575753a719829824c050d90832d4b5feebb96b3e476852e4269a584425b90658ba5810dbc98aea0651ea43331f356752ff7ed8aa1b5a416ab37ab21b1e7976ef7a3f00c52ab7cc4280ca871f3860bafb1f7a9c5c9df1ea2b7076ef2da7314aa8b1e44e8d0b4332392a5fcb22e0b7e34beb3069f471a9969b58e2d619b3a85cadc9dd6caf3f64389ddda8bcc9e0f80789d8909eb3a182eb1ee32e30a2212db9f3c284cfdb3252eee04f58acb729131ddd367057c4603414dd09fe0b2d7ee83b39f1607cde172aefe1f3e20fe2a03c49ae417098d7bd82e15a8b21d3e5afdd19504d9d92349e4d1de51f91419c06b3bc4f9535013246066bfdbecf6b9e189d05d166a7ae77cc4a305e4eec2e3488f6e1fc7e5333156dd4fdca4ca80d0cfd7c9ccf3bfe8f38ad8fae2a9bebb8cb28d85ba2acc3d79634e71f21f001dfe221fc493b95e1fd694c25609ee326458378c76143d93995e5bd6a7f26a04bef03b43b99e6e255f9022d78e262a49915c94d974015ac230a5866e8996118dcb0a74e9a6742200fd76f7ac90c2376db1845fb2d23249c98421c8657e19e3b6c6eadea5e1dddcf8bd917e5dee8e8f206f0b42f08ad6bc2c21e81e2cf9ec3cd821b811f052fe696f297f1a4448310d288aab6b9e4d807bfb14cf8e7e097d2da1b14e21b64828a1d0e7441c7eaa76d4e9d9df8af625e66933bbbb9f9a2c5473a8a4a18cf3f7ebaaf481f157495da1cc2b003efce6352dc9d397407a1084befd015309aff943de27c748d1cd603f88ad313b48e25005a6027925903263544d5962e2b59c3650eff8c254f1746814498dd4b1e78ea707f971ff3b9b60fc44cbf5fce504171bf208f05ccf2f7d44491ac724d1c32fde99fa85bcafdc771a8084f96614883dac30f5d7fe03514fb15bfbe157520079ef67c1fb3e6932b3d61426fc33b1a7c5c1a6ac7b24053b74bb54f0a00a52780270d978483e0e2e5c39094b6d9e7647aed7a866201295888fb83c0ac1955a78c377b651547541db93f109389c6da79086b206ef6dca84205b4856b02d3c0f2407ff1e2e7ab1f86f9518b5aed4968df0667c1ce4b5156473f26bbc17d17ad6515ab3d8d690b8415049c071deb2a3f0d0cc2c1fb20928e1c01acbb858353b6d8c67188e9553157e89fe905ab3e7d2aa4144f3b3d6b56e4728e09986639ab92e1c3bf23117f0fd8269c2adccf597924a14c296d3b91293ef992892616b4e491d266841edf4995ec34d7f2dbecb770b58598ced5e43bf15c2df4704c7f1aabb1663a914f5bd986b722b7a817862243d8dcea37d079569a4057a55d049b1633b4c50b3940e760ba5237158287e6adc4ec1f394a0931cb3411271ed930df730b3b866cf1e885acd15056d97dbb3dfe2516298e4368c24e2ba367e62655125e56b1a4de30594b04c1b8c3f7cc3d21863c7e263f5947ea47a9cb27092845d2a5329434e2725f8568e4296b80d64fcaf579ad8da3292975d0025a116033894dae7c21629234bbbf12d8f5d941069c571cdde0a5739966f6143015ae532c4cb9db192c5261bbc063b4169886fbc55c1b7c32148b83c8dbce8aaf1500d453181630ba14b4a96758532bb9d495685712734672bf3e662dd27029128998c086766bdd08899ed6175b104386bceca04f94355e32a3dba7dc7e79e0bb429e63016c1bb2e0f9890602b0a5830a14c851a36ae68daf050c41d8365c8e3f7e1943a869d1e6ab58ff4dd9afc254fe4d6e17dbc15b7c80c8467744fca904bf2efcc1145dba81a59d51815738b072ad0317b367d0795eb8ea1c9ed02bf616f20c4649a001b04a335d8918e7d63430b00749f93dd76d6ee83d523f5951a36693d3ace8109d57d5dd9340cdc71830a20cb71320be2e9e4445aefe4a752a4c0655e7096e39e4852b6ac2a365bf783c96551982b2011c7be7a3342acb4cb07ccc86e27af8f96a9186815f08266b745660e20e04cbba6e4c2475ae855c1a8c5d3195d4e0764d971aea4de00ed9b3170fbb9bee1854bda5dde1245466fdea85670cbe4761e15a58b7a8c35dcc1ba6994f99eed1803c75a50dc5b962ad403876bbfc3f6e65dc98b8d4d1e4942c2e3cb9283c3600d45f14d4433ac321f4fb7c3c2b5bface232749787e7805a06245b869a9715ad1dade012e7efb16be14e2a49df1f78007b6468193fc1a6ffc969cc1533317507ef30d54cda7be9d1e3b34c57f209a9cb9492fb2346c99662e68a58ed7b429789e7b2901a507a9bd5012c18cbbe2ea818816e8bbfb947836d748da37be436565149b95d50639cccc43c849e35f17c398ab31c481ad7d616e8cdc9f86894bd087fd609953e02b87755517610cd97cc82391b2e50de8dfdfb5bfb30cb3cb061241062e3ffdc75f430c3d9862e7a9433115f545ed0fc8e67d0be792cf6b024aed008b50fbbf7b62fd12fbcc4434cf06a94a3789c02714f617ed90d7b318839aaac59ccbcd1522d02fc54a59e39f95f9971c52b792acb9f21c884fa5c8633e5e542f079b685eb5e54050fef16a98c8c8b8ba45b897e309585d6e4c72edd5b9ffcbaf10d3322a9d6954f587699b5f30f97215b9a66451e08cce77b8e2e491d56f0192e67087332196abbdbd55af5f17c1c3ea841bcdbf2a809303321c52180934ee81e6e1f841f6b6218ed01d970026a2da0ede3b9ee2d9782757e705224dea4942eb5f303f558a37d3d0f5657d75c0533fdc2ed511e248da44dc0b12a96f5ed12c81b22f086d4d260d3c07612d7b34f6b3511db9e494e91a61d1d5b218ccf8f7a35d63a9d7a9fcf3375396147cdbd2dff580f16d323107910fcb82e4d8b09b1f7154ecb1dcf1f3a91fa01a191355dd73b562998e1dbb9de88fbb7995e778a080b605f756352b5154b2dc3fc415f136d0d909e04294fc0c8bb6cb343df6d607ea55812dd5f83b66f77e1ffc530bef135cc3ef0576985c1c842d27b4be83bbd8b53712247473323bce5311aa1041748fa0582250f310fe9fc87f7317c53c3fbc1c75bf20d315d2f8efdb3b995e4558c2c6e8d6bce2b608d36163b31177ab5dbdfd3437a9a0a1165b1f2a9d990978bb8cbe9be049611b9ec88448069784b2a337ac5ad84f6a89003bc5c6f79f58122656ec7a2f43e4304e8d0e1349470beb72ce1d0571477ffcfe90cf456a89f0a0dcd9f7af6b2cdc067f8c1307f857d882f2cdea40f838e28ad0353349e42c8ca4b7bad532d8b862969ca20596b398a670fac11215bd68d0cb8ebc4534badb8375224e593364e0146e99642658b4f4b010548e594e7aa7374c1d35733444848a0ce66f686b485607dd07689d6604b94b5ddfe2ec0c84e7843b0314f33bf50461b2d6df7c590e993d333f0275e846b2268c4ecfa9f2f1dafebb347212fd04463853533034c67f7efa341ac37d2a2f409220e401a892b41a0c2bdcec9670de474c888217c5dd20fc9f964808510a5784fa2b098a39be871f87db3f1b2d37606e58511257ffff6518967e2bb1ef83af1dfe94d5443c3afe044cd7828a3763e0af3d424f6e9c133d89cca3ec5271e585eda419a26360f845f1ef1adecc3b802f045380ae81cb8e9871cf97f0bb4e20f8b3e2fe5f5b82061842c47a460132a266e56b31dc680ff92c042efdfb76238e7240e49e0ffa801dd5752ab51868d3750cdd74969b40986d3cbc92f9a24710e80f1a1b104160d0e9b5901472cd7313ea9369ddef41a5430c0f382cb5564ef95a747f33e333f5bed10794fbaabf022474c2ce0e5451a9c0cf2233649c9310427b8567c70d51e76f9f9878268757bc6e22a2103ef5cdad2349c9a81bd5d0ce044dbc8042921cc4c58a9f56aded61c2d491ffdadee9df127dee6fe112e1fdd2fd23347dfbb53925ee5256131d2f092c90169e426dac1ff9d6472a953bb63877f5177dfd9e7e90083fe0d094a4976412d37746b3d3b4598bc944a8882af31bb0e85ad898ac27b5253b9b827e71e85416a43a73dca4172afd350ebf880e1e392fe2a9e89708228b063f698f9db46db6266e72d5e02d1ea8139f11166e2733912c0aa1b3ff8ac4ba0864582c120361354d37fa2a56e216f4c7288ee0d73945ecf2d6c040d8ebb9bf96b07c8c0d2cf3aec68ab18647f61d9c3ca43ccf3258bd59b7a5093f75b7dcb97d6c20e1bc33de72a511d630eae217e1d49abebe55209c150386e6a03d603c3041153686f4bd7d4bb780662b5c6fccc8331c622fe955791070ca52cacc093b3c24e4e01ea0281f0f4934082396419ba335c3849f75785405d2def4d9609c35a826b99d0d8b85b554a03b5d7c095ae4224d10a0e097504695ff002d33efafa2bceb95312dbfc77b3aeca24649fbd3dcd1de8fb7ccdbdfc8ae17d92a14d1791466f5bc5ae4f517b110651ea53b61c5f5d92abe484f9e9232b1abcd571e257e3c0e76ea567bad3c47a461fa9aa5130d2e730acef32893e95629e0824c869a18e331b44d836d3653f3de94c5a2459c25a5e312dcf060c2b171898a52cd96b4baab2c8b019d8c868b53ebb4c43f3632dff1c93e31430b859fe762d28ed91a1aa21b595200a6caa8dba03cfb40787e1a42ba7066a9a453b071ff20e0a6e2e83fac635b04bea31b10cece3d66c57e91e83dd44d5e11545cc9df5048c18620dfc8dfe5858e831708f328700e30c66529f7ea8ac16905126ef893bf944f640860e1eca717880ba25cf1f1a9594efb232b998e0c0dea6adc667b9f89b5d7fc95ea511360c3ff7b756d264f54c53f9b2bece37bb1f7a825df5ba0e8cbe7d334580348879be9fcc79d0c1fbd6c8860186f22ff892573e68e56e3056064066fa3a92cec81f7838922b4513eb4773750e55f4b4eefdc1393b2947d2811a518310a1ee312c82210a2ea4c32678c35dcb957fc6f1aa3ad0f37681dba4c0a3a878cfb69937a4ffcad198b366044e3c8d32690348c4dbb224da68048a6896b58ac09cf80c77f2c98b37cf23accc7f57f2831c69754d179470d74af123785d66f9e62d09084ba8ec83c6d06558ab2b7d8cb558f46bccea9047e14fc8112ef910d38f3ea1a6b50eff82508f7dbd6e082ec372d1d50e2de4756da1997338d2163ee6df53eebe4e380d5e97b9efd177bfbcb6dcdd72ae3e83eebacf8f12b11293d3588c2836a8cc076d9af1fecabdf039617e23fc3b8ef2223f1557cbe0627356a881a34e5a1f8fa619b782364d9d509c24137800dea716e35a1c2c6a8e6f223be5ee0ad3aa55e4ee2db75508babc8cf5409cc36685ae12a8e83aacdabd74b295fcabf58ac24213cedbdcd1619972d8a6812a80e2f96702711f9919e39dc51836e733111f2a74a7851d76fb181b40dad562bc09af4918701d7fc458736880786ccf8c967fe92bdbb921d4ed8a79aca85a02841a9b38facf69dc2f3bc5faaf0c10098cce3652539669d302fb476b2702c0d4331888309a3168726794db89bf0507341a47433d99f745ca0900e81fa974569f9aa94c0ac74ce8473b1efd8dd872a15f98f5103205f6e7d50d6dd9c388ced34d17584a6034be277ee4e21d85cce614ff364646d97db6e3b52765eea0485916e4eff3cfdcb73b5b37ccc4fe8748beb1161a2beaae65bd4789c4c34e6bf6f7647f4f21160f08bee20e77900f93e41e736ed815246d67b03a9d4ce45e242151f9278a924344fc8e149c588894309b92adeba7af7259d3312794ff6d5081bab3e637ab613847191dfce1522f59dc3f776bc3d96951843a8061399520657194a9d13b200fc66f0b32cdda8770170874311af0bf1ab7d391a5511b26850beae3ea1bd721e5c1a9324dc352bfe41408a6ff6cb4d7c17bb4b2715c438885dd1dc66101d60d8d11e457c8a4158bc3cde3ba864f5caf93006b493dbc9f92d1273bd2a94bb64628049ca95ed4234731a7697cf00d0afabe7255f8d8917d8c61b80b7bc84e2e5bb7e4c5485fcdbe85e40da1e9a2d6a93fd67138dcb9dc8e018bd0a5a1cd4f5f6c98ee3efa1d4b1fe6071ad9aa38c0aac36ecc70c075a572e6c1210f3388ecc3641123f661262670e93c8e2f145b0241a7366143f21df73773d87039c9737bdaec9df2ba0ca5bef67e32b5879c31cdedea627bb95a3fce490814eb778d79064fb8c71cc91885176e5b77675a1e927d8b3e8bf68c21f42a0b5a4607ab9587bcb3c6316fa22d2cb1f63fb1ea9e9780e2c0d37e2ca3bfcc2c9f4a9992b5272248ba123d30692a54c08c9c7f4921729381e387fb34531e13ab9ab7fb60f106f85e9c2b46648ca3f80dbe1e080633bab3e60436cd1463ebb67711b66731be5adab1397e7b10bbcfd3ad8b922eac45bf77140d973ef36d6d2ae30a9905f75fc78e771503fae4ccda95de53b6cf335e9b8da667903223634fbbc912edfafd689be3448f89957efdb9ba0daeaf5645a1afa94b83c10273245515e8e41d6565c3ea152b88c2abd0705c09a5f99d17973ffe8ce2c3f052c08233a513f9db94754d195338aa7cb815025516663682b6e29f9b7091954d28ff4b2254adec30d1090fc44e078521a112ae6a6c74dd031c72b75c0ee8b6a32f73a29dbc3e8b3281bc0a15c54f83819741b7bd9c02113b74d165fa821673a9ff57a6726e698f4a829c007f838399ee1c1190a2730684f4861fd99812fa4aa2c831963ba7809937b1d74895fc52f80f614f187dcd6122675ba8f39277f15f0a52d8c63205160b2ccabc0b145bb1b43174a32f9e6119384df6582b62fd994a5e20a8359c61bbd3411849c2026060bb3a217a43de82215e03049c7f4ff7ce41a16823c02eedbb6b0a0e8a1e353d27b925ed92bc0bbef72d4ed089be4fe3200203a118d1e1c0b3f4ac0f6e3a85da88fa4f1589ed4cb77da7a1e9d6301ef301c41d7fb359d82e9282f2db3a7cd1b28ce2067bd670c1b1ec7aab26a0e3f3adfee988f3a15f1dd8c3003d15a43c5bd5f1aa4fc1c649e9fb5ced6adf1411019bb32756b6663fda180355b562676d50aede34b5c891ffe6dfc610e5bb5c8887849f255b7a6757c619773bc2b7a2558506300f18116b27de4c99ac5710bc62b3be303b80c3f9848ac3afda8568f5983aa3b8b04c242b5dfe98c1002ecf0dc11b1d9feadecc34947826a1ac7dbfa3b4ca344bff35708aaff224fed1790da074a222dd170c47d8c3cdc8c2e03b8308873a64d447d81206eb723ef3ab35ed68ecb564afa7f01883390589617486a0f5d85d7cafcc9f6a801f1049619bb008a8803b369069eca4f03955583b831b20c883b159ceb61a0b032dc37c61200f297ce968287078dbac1306b41496369da116f9b36affb4c35cc57e7763a76fbb81a4bf7ca02a2b79be5af7a6854bb505362afee8d1e9e29c334735c2710d16d7c3e37eabfe5257357a9373be40dec5092a38019d958bb6bc8d10f8b69251110660991d3da0bbc231f02febfd5eba7326a248a6d460b69e7a9894bad77b0008bdd3ef39efaaa00086e8c9a39a3bfff64b2eaab2cf95ba98ab614c09d3a0904578f70124364daeeeb40e5ae43c31169424a1e791f1d1dbc7d79cd86f279ab8b87e19a04468a34255069f9ce0f9e0e4f91dbb8aa656f8f478fe0acb98d5d4ea401fc3002aae2ef47d14d572462c095eb4083ac7e08bdf32e356d9c6916df3e0a07204a2af62f86f06192572be5a2c8d686280670c21b90851abc62e4a2221c34133327abfa79e93287e3949a98a3c740133fa52a06a291a106305e8953066468915bec469c583a222197f1522b5125958eb9c0ab23540c0205968adb04296d14b5e5e26aaba40604fe2f49a6b4bb4ae4530e5b7385393bdd9c1c85888397ad5bb9c3fd5967c4b0ac6ee0d5f9e72050d9f4e01c00b6da271f07321e3ffb7f973d391511f81217ca22f57c7e48c761e13f09786f013b848bbd45d415746f3c5516e46c919f8f263f9f58f0ebf5355b95e62db172e10d0b2cf3fc3de716259ce2eb55b2c4e7263b040d47a83aae4089fdfd9eb3b4e44648aeb05e23a42832e446bc47ec8b816001adbb010a148a712a1475197d43c8354677b8724582723eba0268ee60cc9b338c3d60db83852ce8b78faaad2f11d07fb36391f3ae488327f1464a4ebace243200abf20390efa38650e004d942afbcb07811882b42c78987243f0b786a48b3b2ca4d4db79b082d70c69cbf42ee9ec4d5648858809726f0481a6c872af9ddd94922a34528e7d83bb005bbc3fd83945cfc72bac767f794ed65329b3aa204c3c46f71fee80cd9f9b361083c13d4aec07d9c823c0c8cdfc717e5f9f4c6201141c654e15774bb41a755c1b632a409b4bb6f22296ce92097671c12112cac9163c75d41170efd773c447a18294b040c9224eff138962309494b5ea068d59dee2f2936e7321fd5285b894a308c7474569e6443e9d81269aaa1157c06b0082e018d678a841c3d0a6ab472fe073d9f9ed1b503e810802173091fb31374d2d7f6d09a401d0a8aa691df5469905a098aa7c1cf5e70c38f5a4dd19b199e9c5285c3bcf065bd2990500268feddb3b327b9b8656d016654155ce37a2e48cc0cdad08651617d8cd9159dadca3f0c10497fed6aed0066c1d1d7b6fdd16091b912900b53e0891a295bc23e599dcfc415befa19807cb592bd9ce6cb9a3e7a60dfac8cb20644992731674a0ea7b23712758444b4c2716c18fc96c3c196257c6d25e72ed6945e7ae6fef4dcacd13dfbb17f5482beac59bfff1db883ad3973e19d4912839cde139019bfbeb60a8b297b74314adebb7ca78faed39ebb444c9f18bc95f1ccf0722b25598e67d9c0e0c13174104205ba27cc20e2668794cbffa60dcff72050dba4269153d259d74cfe2e578245d16fa0ef4eeb6b6acfef081594162a20510ceed6c1d5fd537a3e908452905f2b9f4843360cfe7630bbf73a153adb057d88428e1c5bf59a745e72fc4d0e6ee11084b098e24d48a7499cd0d2ee2f743886c3634b0467a2140a813b6ccb9d1d1de377eddfaedc37ba9b5a102f3e86eecbb1b31587ae2c3a8c4af1981a92ece6390c487ddadbc475b2e9e162efd64d574856548aba1969f8811575fb47ba3b5d510ed0cc19215aa52e3896aafac1a54b2979f4febcbbbcc3c6f90e169ea2c21f950cbf9bc7d2dd31b0a7e0a28d09d51053fe665f740351647e4f7ecb471e4e2ad26af237c40b33ca32917678a97744d867f330f36080b34a3fda7602593e874242459a0fab6a3cd754a68c2ff54446f436d5b3e73070fce49f9dd4391d9fe6a6cebd9fee356e9a2e867acf6a07ab83711352a9380487fcbbd19cca6639d3324b90e38b35d43171a4f6ead013b6d082043d66af770f28a5e9400361932649aa4b6b6a175edb955d4e276d946a7454123363dced01eff57fe7efcc5eb6f7fa27b231de7f1426413f574ca0abf74936570fcdee038c14494bbd99e78cada2b86b6c52ea6b8677a457d98d01be38cd5edee83bc67db4f454692accd1f307c4976a2a3efeb13b060725f0a148416a116febc5c513a1d3e0f43d0016fe7ceef1582d94e0286f558f1fad5221b10acb47732aadddc5586c3d180000c56a6b53f6fe71509d5c2587ccf11231eea89058f34c078dbf1708b7b91df4aa59d7426ec224aa7471727af1fd8ae6a61997e0da70f595dba2455f43e71eae5272338a09643bacf025e9c60bce7bd86597cf2287130b8bfa17484fb8bc7e6e94742eea279bfe28704040f619b0ef0066c0b79692a383d148bdb987ca725a6e49cc48db91d3d03958943d848c96f710163f54d907314491aa6ff1051ce312e6cfe9176b9b151373bb9aa7c681df7767ae004501948a6c9db42738dc609dbb427f7477b9d69b83b3f9260b57c9e03b23349f95da2881bb5a4ffe78fa781ddf31011597f6cef1798d91201426755a5a878113a966eb7a869a1791860afa9b2599c8af788eeefa0a7590e42461acae58752bc671b89e28fcdbfb4ac88970a71bee7d81b73177190ed4261bf125c911f4659bb9f81518a56ad16468042c94931a4966601e00747dba4ce3cf04f74ff07ec2a07b69d359383551c8f8e446d45504926315f8453e70aa8a8a19d5eb221721ec405b359dfe69b08042a3070063f539a68762cb316649e1f422ce836f95610b91a07b0ec474737c1e3404a70b619d2cecf32b3d581b4e004e6df9f7378b44f31bd839bb5dcaa819e1fb1763ed5378154d0c31122fa281d744bb5d6103c66579cdf1953f84b2650494762556477e8e981931a30274dbd3807b1d52aefb20f60a24f169e97892a80ffe94ebb645cfef1a95e9a4aceb10b357af53efbd9fdc15517234c3c170530a2337c439df00d17fb693d6187444a53eccf6a83747ebde2c683f8d6c3b40a32fde513eb902ab7135364b11b39c01cc91d0dd10a49f110f3046ea7edca609bcbfc119561bf06cdb1371899b715ea17e814405774bd8636f29b897348c38d544f02a75f133a380bf360d0232942d9f9c6c9ca5afbcda7001a273cfd5d96a8c0e72419bb811970d717542c226744bf1007eea39f462ad6bb7089091c046c350bc5a3b3c54a94776a1d886c48e8e1c8dfd124bae1773f4d7ea8130a28f39e6cb70046266eaddd0cc24e62f509b32988a840ec94373b26ec9555f96ece431e077de42bfb4d7463b6811b56394840390d86764615d0a281ba0429f4f99f3a1e80e144f8d4ceb69b99ea318f6f9a68f7efb192e28b4add614a7b5f99b6716db2df6ed15fa2a9191813bd499f13120b57a8a77f00a609e39ccbcb75020d2b8c3db0595b4e91dd29243c2a669d2223305bc297a70f748e35151ff652142d0f8f3ccf2bdea0dcd15da2a6d4c1f71baa11098b60210c1cb1f100c271c7a2fae7148e26e3ab68bf430ef15a8c21df03c8593706430287b888ac41f42de87346a4d76d1a3c723c76a851713162da866ef871e6ad30faedea00c215957d47cdc0476ff2abe6cd24563bb5e5438bba124829c063d0158909da95d19c73a424ef3c21e7e1ba1edb46bd4561cfbf57261d419557a23ad46939811e7c5be50c15b20ad79d54a3a3c7a57b66dcb11cc7a1d8cdb8214f9378ea8b77d250113231442c1036ff4a3a4cea73ee2ac13b41cb64e21088496cf94f7168d09765264526df3e38e40931fd3d4e783c9980d40a90b195218092f2a58f042646799c7f36b29272d54b9da1badddac9fd48ef47b6bc8c47014cf242a60de8ddd303f97f0b50d86b70a72b232d9f1c493d179d3ec353303cea0357d1c9a266a3bd32f311d709250829820b5f7beaeda70ecb634bf5c3a4ab1638b599f76858ba9ee6bb5317f69ccbafcae8600fdf6e95d5a42b740ab6c0cde6c436d4a560796e67da0be31b000f198e98208fbb785aa9352df31bfca8dfdd95628ca26f0ddcd560f79e701ef2cc87372fb6ef4014e8e6c9a56ba37f39fe83af8daf5b1982a726871a81523b41584773b2e168e706096981563c614c47f874189e75e0e8df7cf0581b70da029ca52e24f3513a5d96bc4453e9e1c02d8ea85658d863e1c649d4044a73e45dff7c14185c7766f5775f8c4de7ced004b427f5db95f33a97db999e3c198afd0e7f196beb1404ed58f606cdd4b00cf6a96dde7befbdee516f7eb2ce7f5968e500e4a0d3b6bce0cb0678faadbf9f2953e07945c314f1b4c15423843caacf9a565640c461e2c360d2699c9b788ea1d967c4a0fcd20507779e16ac7730899f448735c3983fc17493fe09123ba03ecce66d110f0d62ced24cf89fb1121de103c25438b7d3998584c1166258560d478efa5ec8c4e873a03d9a392a83f9525b3d0665384bb74b7509c47fbfa4390ba72cff5ce186d75a5c55c58fed385fb026bc7ba46361912c8e07c6c4efac95b84cd98da0875eb8f1aef580d42599e8a3245c9a4f7728ca0f71246bebbb59d910ddbfd24089a154fd4949b624834fd5fb825c2e26d58cb24cab09b388e780346b4a4b77b158d60f1dca5259070cc88883f20860031d4ad7e6cc570feb642372ffd9ee5eec9ff0fddeb51779dcefd43e116fca24af368b9001f6d009d35852ba0f68e54bc818cda1de011fa8d86510c4297c3ce975366c682936df0565fd243b8638ba3585434410054ba75cde61d7e7f6bf70e4621113e3f076918ca265f2d8c279f79bc4c12d7f85442f3d7e0112d6379f35f52d97432d1f139f55bdd02f4ccdd67a255c5e5c52ee0bcb5271dda3e0774149c86686c2477dfbe84b50817dffe5ca1abbefeb00702143e97d8631b645e92847b47768abb88aba6b62647b52c74630a13c1bf8da7f1c7e1b259488f022d753629487ef7dd5067872c70a2d45809c3018c42d9a8168c584104d6c564f10e41e29c76d50b4f2ce96d163846fe3119fe3c112d1985de03f7280423c2abcada7dbeeb3cf0e7ef709f0f5eb52ddcb55f661bcf998fd400c38a2be6b2d918e0d724c8f62ac2ec104f2a4e81284476649a516138bf2fe0fc2b9a6afab9fa6e5e3a6f0a2c1fa0982f8e24afdd5de0bcaef7d933af3cc17f64752284018a5206838679ea808a28a1c355da61bbf47a9bdc276a326b8461f45d1a8b4c3b343cfb66234c81be9f2451af375b90f0a00b765a9abe0b9113d255fc6b1d101fe4264a2ca205e548f6621afe552654e68e8b30d12963a23e0b373bef89ae2d8220b62f5f26f7ccbebcde08f35d3bbe047d2ba17501fdbaa42209b70a1a08c4a589add8365619f82930332ff1e5475c44733601c94e57798e69fcffc9f14224e7c36f0d3d42316eebac067c2c2c9d368334a6cfb231716409a4390c572a50aceb823800544a94631e6e3a0c2e125cfab4baa5ebd738fb033c8d6afe9ed6dd28bd4f78a43c92e3edc848ca33f11f0ed456aaeb8044b0b3bbab546150008a2125350bbd64377813eb3be0a1e1934355cf35959d28e1b83527bbbeb8f3bd3a5951dec71b9214c58a41e459134fbd19286cb066e57067fffec0bf1faa23f051d3e7d2a800a9954a2458e0711bdc442d054f7c679f5be8ef2936a6761a29fc002f97984036b5b2b2d0d8c17b1fa40237ce2a830e0d3e7c314d39e958241f2d9318440d7533e4129ec75210d692294d0febc3c84363749efb8393e141515b369083512cc708260d0fd8259c959640b5180d4b3348d3a3be97a4ac042e78b99b48347b8e011801a1869d3d151cc9e9f6a33fb71754b4d1d4d5c47af8c66fa530d42a2b61c4429dec12afb6682caf9e7b2abf8b4d62310127aa003393826cbab160a9fec389fa0d2e1b9212df496abea3db828a51e1e7bb28db8d5a0d2e38623ee4185b02f331712b49b407345fdd7e60981690e97a23fb5ee936399091e3be41bcd9c03960a22ae78833b4b765ded7c9462e11302e6eb0f997f129a65a3c6b707a4b7da5a793dce932493006c7689ad02ccd42592ad24f13d32d8b0e76c87b396de7e0758f6f4a638c14e24ee0a3c3d1d32f5150adac423f9128ee94b0d5b39ac0d483176f3c799d0f150b486dba3552087472b97d77100073a4b6dbac7643ab45a5c682df0cee4537d9ce653123726fdd4d0a7993ded22eb2ee72ab60656c96babe01e5e927b425e2000a94186d6c87e94670e8ca2f05b03cf9211fa79a73572ae70754d1eacdf10c0183b8d6ce1c0d2a6b49314187d0af0f5152c3f2cc265d8247140103e814601a71e33d6f7118b185b6cd35b128c690f1e2c74d268436247aced5f8ae0cf66910eaa8bfa2e5fe89eee976041070082bf879f03c0edc4f1887e490c6b94be5e4faa53373c24722feb5a3395051c9d8b75f0d6cb6a853be4f7086f58e90438fc7b52f064bfee1b60fb7bfa0b759f5a6792fc6a418c99f7b16c975844410de62871ebb4941423a9b3643b631b7ab08fd572c38cd1ce749f090860cc2aa26b6d8a61cde7308ee200db2ce5e095399c5a17d35e3e3e80f173cc99c17cfb0b1d5312c75d2a52058b98b8398afd39dac6cd245d81590d2a7b0d5f852af843fbb4c885c916ffe151ef7d73391061d1e749925b6b5d3f0d665c5546f3b8b96575e71e504c811758d3ead0e3063f73221e9cd31e1fa2ff0687e54267a2197c3ad7eb27c69ac182b7a2dc7e70903efd75482a3adf1460ed35229e3170a8661bfe38bd2bb5ca3985d5796d66d30921e2fd7d893e27c143d6ec6e3a298fa267c8eb644365356549fa13d9c2f68f511660124475f5cee2d8f29b8cad6cacd36fd004256edaa82fd90ca2570c7bb0612f66e9ac49796d3bcdd3f08ef0a08698e34ba72f078de090de4d0847995d1955cdc1d0d8674d8c260b1f0128b1e9dfcb58715fb8e56c5632dd324a849365d8f04341c96bdc28523d49dc255f24b91d705fb2e9361160c4b76d237aab0a0b9ebb5b3d228b5c83c9e706c8c52448bfbbcb1e2d4088235bd05b8ec2202409d2a42938373cc4d6d6adfb63782986ddb8c93224476b4fb1885fecd2dab9149e5ad721944a70b188fa568a2af08e570c48359f7fc9aee51c093cbc1d31496a29a9b4bea549ef6e926e5bc01c128c3fc1cf009b671fc30ccd7f2cd52ca7ea73fc006784a966c49159ebe5ccf7c503d46dcded854b1991d494eb70de0bdf4dbd61ac9526d1e019f61f9124a8e581d6b6657582212642eba57bc156d257cc9e174adf085e5db73eb6ae4f873ea2234784fdd10b089771ec1d9b8b98626c234d400e1519a40af11c7d95f2af82394f4c67b9ed39c049f0de95fa828e5bfcb60aaf33cc174f50d183641cf353b9ff4c2266fb78661a37de5ec7c92960cbdbc58a3db407af5ea8b3e299019216b2fbc552df60e382c36becc82f58ce2c0bb7f7e83d4e8a9314ed5335b1fc63aef64d7bcacaf7a21b3781e4b2e3383f7ae18ddb8b03ef8f8354bc4b6877d67e5435f81e0a5b22c7990cd695206bc591a29e707ba10c623e493200bf1983299e635fe40e7d0b9feba31e3806be836dba4b0b9f339b9427180861fd10cda90c7c972c8c8222e9327da20b3126d3950d700cfe9642b07572074a67357cbd40311abb09dae54ba7de66a7336e9b581d18a76b42c9d6118b7cd862c074c7945e83dd7a1594231e6303ce202f241633135e62b22810145384d75e942720a4c4ec5107e35e2eb41e63d6d59530da410817c48cf4fbea857ff45f727c0c14c60fc9bc2c816061672a52871209bc41753efca6ca93751586d62509de9656e77433676586be7f98a0b044dccfce1ec0cd21a6881b16a91fc5a3c70de4bae38b3f1beffd665d2b3f5b529dc9b0e5521ab9e1be2bd0cd838e74754af0d0679d032a0eafbe14415b8b0057a88da3dbf89ef53d6805fc97d20c0da3e757c25fbe6bebcd65fe207033f67d2b12ea1def65bae92b6ddfe96de542f5407f7012141b7956934ca614a2c1ec69a4c6dce198b4436c29527466a31f99f0d62d504671a93bf31ead64797c91bd63327a17142da9d5d5487caf1d68b29cc238c78fa8085995ef2aa56a0ad4979a4a49e0b9ec8305492aa6f8068e15fd54980e12b0cce4a44cef527d6c8b5243092a32770372d229cdc4a6779af7baef4456c68d63137c0940343fee0321e5b769a7f00a7e46f3d95bc37ed3c8308e7e6cc8704af765bda162f58e7e11a8349a083a9643c926c06b03d115d8fdb6cfd580e3456ef91cecf3c4f95d3585a6ef108c4747d96bdd681a29723cc781e6e357586e138812e0eaca3e10dc0de1f82cc006b2bd5c75cac4b924285be0ddc73b46b5d7f49d1c2464386825af303d442ab267feb2455d2de4884a6421c433e3cdc7383baf6bee80ca50d01eb1792ece08b2d28e3ddc0496fa76e259a06353e4db34c6108e7063025f2a3a5202a60bb6db4c650c6c402285fa0d11c9db77a96c91f28a46e291315d66da78c0d93b9c9b203de9c29072091fdec2b0a7f3efcedbd9f0857306a296ad5de5ef3a08e87158646a77e011075969b98cd374d7eee3591b618dad51f289f6a795f4f4d459d16d4f984b3ac9031b1aefc53cb0ca86642ba61ab1404757eef7cada6f0cb68ce3b8e898875c415500ae0d3389ff085098c34045d140e949f79e5287dc05a4c7dfb23db7ec8ef58292e8d6f9e028fce4e202742732a05a6c4b4a2422a4065e871c238e3d2fff92381e1ab67b2615f6782cf00c7c423ed0e60641e4877ae46f88866e4c7ac1e1917fc0391e93934d857a3255428909c28ccef3c23426fe7b25c3f34b5094922a4d7bf38187d13f78f30f9ebc2b44f585b7dde78312bcc218a25b4e41e14de150f820ede8007583a5afebadb5b9fc85d7bcdec3450e6d20f1b5241a1e18701597a1aa282077d1765ec11c7ad1c633f867de8c17123b3b6a0ee680e1acab403cef3f925e2cac28461af01c8ec9c40bbd106c49afa528a09e13c48d99f9cda2104dd2890aaee8286d4e4a2db43c729d41afc81ca3c52015c13e0ea0403181807f322bba5c7c588ed51b42076385d50d4854cd2be88ba2bd05ac3958046acc9643a1514aeaccfcc7b7b220396dff5a9efa5df69ecff223ba218ed670e0657f31a52edab3cbb527e8246742ebbda66159b942df4cdc2db6e12f9e4be587cd002fb5a774d97c0c47b02d40639531a2d6e76af6171a755103c2560081c1fba48d9e2d687d43789fc8097b78316eea9f49c61ee39eeeb261ae8aa64710cafdfce5237ecd13f2e044485f93313e14320eb426fe163dcf5b9e57d80aff5336be5114992b62e3564bb8eae92c006b65b7bc587454f28b36c9cec6f850ddadd6b47b617e09f91d5671049d7d56dce89c06ed6dfaac9d3a11d1376f11ecaff4e4e400ce8c2798fc6a3587de0f1095ef2a153209b02476ebd92e41f1bb3a13b5523e70eb6903d588e977165d3560151b4624eddb35bd3540248e7dedd64c369b6a97b5c0ab8f3d6ca5ebfd914dcc0ec1caa219e0b523a456d8f4624cf60ae7551ea695263f11c457635ec66089f4b53a6c26977249539cb90b2a476ab197ba2801293717ebf63b4c480694b26f12a54f2c1eddaedf71643e07f13d75bd76fd3be7eaf71ab1682d3b0e10f122c29dc08019b337e32189406e123ea77b6de84ab59ce88be5431f3e9f8323767920904d72377dfa2d60f4bdf9e1fd341b2dd46f71fc7543c35d1f993bb6e04927b0fb645d98ba010bc4aaf57a3051c91d3d775b4d6a23a08fa8988cbb0f482994cfa0e12c785a83feeb7b3d61d3b49bec6a8f30d95d593ac11915bc1bd7c664cfe471c7bea7dd76a3804467a8715d30bea8295c666e65c1ff755bf81e25cbc1956b74880d5d053869a71a6063f5cc26656fe4f4d762c4a423c5a60393beec08c006629bc9d7047964ba23d560929a860a4376ba74e16274b01355c418c1d2279eef8cc2ef664f13653ef344bd1ec63d819a4e1efcb036c1a2435f845a8169f054e063f4eb971ffb6c559e7e84ce53d68292641a38a16c3b40f6b785d4a00a2e905e5887702b3a077b08885cb89aa3e498241027100764f8da8d36d22bc2d84e5882e580326473296c9f72e7b42dd312f8bae1a7e9d11aa9d23b07775a352295f2c63489fe948e8c7db027e9bbfd8baad561f49c8ae344318ddae4ae869bce4f698875bb1988d7226a7d443c277d7b28496c6da016aee33956e8ff5d47353dd661a47ed467040d32af8e593ae80d4977d15c4f60ad095f8362ac3c002ef1a83ce84d4ef39b24a27992257cbd491dcccf56dc6952e7c8e8916020a9b0e83f78f6740df77a7a8f067063ff0fd6236ff66b2188a13491f0a2d6cc23b6bae1f66ba12212e24cf7bec730c99e1402ea41134696713ee5fb4e502272040d04b86544fb415ed30695a733a812eba175afdd06542f58c9155e4672d47a29964f4043bf2a0a4149922513e002c17642afb0a1f3d2e40968489e76c728c508ebec9d93afd8a3befc945a4f2ef284cc381c581f642f21a3ce76528edd22af9b69e89257caa0cf3818ccf4d23bebcb18c34a476294cc18ec1868a7a314812cbf0815f077a35325d5f0958954b34c84e6e7e1bcc99dd7523f0bf5f2781d4b6d6c3848cbbce5b774c806f13c1367eed0311d6c5556ee54f9645c2930232f4d3178c7e130a6a41a612e380a2c40f837368d84db8179e8c9de33faf2d0350ba0e08dc865832755068ef6baba118ba8b544113835b9be81791546ae70b5c2016525c6d56bf8d13c661f8e0e0de96136e79029ee8c989535cf9ab27c4ac0a74bb2a717fd4878c7fda0158eb4193f2ea19dfac068fc6883c45510d4bf96cbe6596b86be1add97cfd17880debe260998c605952ecee4b00812a250b51e84022e54889de470f8bd0e6bb7dc2212d169bd8931b737054328e3abf95daddfd2aafb7eed9d19cf4956e024c11913ff3e058ad4cecff954bea692005d1e56e9bc4652a4d14d420dfe7ec7dfddcfee45b07fce756115239701f1037192ea6343f8e34d0ec03bd527666ec3856561b34b72a81a6a555d6476ea655b4f1fd1343337fae4a36c969c0ce42046d78cee738e6cc674f8032c0d71993e1ac6e9fa21f1449c6c484cbdc01d27057b299fbf987453ba355d39b5459a79873c7e5ee2fed04211d8b1416d72abcafc2cfce4d19a8bebd04651eb7e3e133f86b4029b078ddea4c43de4a784de5f6d6df6d539d56d88a26f5e879ab4c45e499f30c6051f20df85f1197f4094a1e487af94e36641f9773bebbd6b5761c02f761a4f1765d91ada28d06defe175a9a9efde767a34fc8ee4a690aa5e7b7103ef48e09bad3084fe16e4f9de69f11d37f5e3bbb5c54a925f9188036599850dd185b0754b289e2a4fb23cb7392032ae96cd3967102e770965de032f22a39651cb18e61690c82b7532bda387eec052a687fac647b712d8f33704882390cdd473a3732f47e018824831792e2c163830ac9001d15a80e04e28a4da2e4b315010ffae59bebb39e8567dcc2150c977ca192bbd862ded720a4a41fbdf319ef38f17006e420061d4648ced73fe91972469b068748a6eca55cd5cff520fef1e9a8d20411fa72de488aded8f8f985bdee4dadf7ffcf921c49055af942daef60d25434e832e64686ea6372f4f237ad07a00243b1a9da5cdf181ee82d77d7be94b2a7e7293ec72a9c74f93d8416ec7e5ac74f6e5a7b37302ab9883a65063e183421d715360d48b06d426d42a5ca2c13ec2f42fea06449da6c0836e06dc1c7a09bc5e2e6729f7b64006b90d979f0ddee147054245c8ae77e4813f0e9441673d72ae5fe5ffe5442969263cce77de259bc6a349b5208ce7b910369f89a2cf57b82ae6770fddab2feca12105afb825d55eedb3e862a99dc6f80a9b887e1a024ac8b268e45ef524691db35c180c835302baf86bbcd200ed8f0b914d4f95f0dcbe470bb469eb5e12f24024c43e3c451147622e0541303f69f92d0a3ce202fedf689c8da05af25a259ebe5dc5cfaae6c3030c42cbb5452ec0ff2f0f39a2bebeb7d4174146233022758b195239dacc983b527488a4508bcb4a41791769045c2ab6ac8c5a3930367f11f4e4aa8398f3ad84091c7743749a198409d2cca627f8b074cf960c8630eec3c26da07a7646316a4ca58f1ace692f625959eae66b18d591a497bcd29473f660bb390b80bd80f0b277daf307c49dedcd30dff6dddfa6f03fdd3119b270a50dddffb03f94eafd99d2b4c08b2715fdd4dabf4e0fd1e4caf894455555933fab732188a2db4b1e125dd0e9b8743599df6a0dc4a3ce41c4c3a957e7e05f0c6307b083b4ce6c847e1eaf9ae9f8a7f02cad4516d8bff0a901fb3b9ee7e9d3e2bb49cd05403b544e7c14574c0dddfa970eac21c009a30af9b05440a938cec333579ffe1e9c40ee2fdf05f56e262d7f3f22f8ce19ce787f330699b114c28fae09d75f5c4a5568f755a1628e1a2bf59d3eb88ecf5966ee10e0f42745ff0f1fd12bccf90cf6f61e19d0d97f710f44d03503dfbca6427da433f0dafb9a351f2b6e2b27ccaa5ebb95acc447685958f46c8763a12d9eff1459a8f859bfeb58203bd5a092d48c42c4d380f0689bea3b849b9c12e61068f71ec440ae6532efaa912a710c54969bfe0098560a0eadef7dc648d3345b5d417c1a02984eed8f8e61f1876cdf716c3607da8ae29beceb193e2c6384c90d7c4da52cf5e954586344aebe4306638c7c1d87f1791fbceffa8f4e33cf2604a8f1a4af686d85864d297c8113642544e98b23d65d020a7db3baecd26e3a45fc9d9d62c02ae0324402d1c0b70b6580ab6f06a4dc7d02448029ee7830ef142ec136abbfd6ef32e7a5b858bb44a90155edca1328f2d0230751cc6e1db36758d1e14b3a346b146c9aa83ad9928678f55e6341aa0aeeca753732b7a2bd25e70528a7bb86368aa631c809c906ad0010f7ea9e148c6cd3b144342695dfa620f0044d03b2280d72167e7673fa4ffb8b85cd450d9d8816bc414bf862366e500702b2e310beb5f7ae3a91d366d48d4fc9b2e4c2e8d6e6e772262e129e270cbaeb4aeb5eb1d1566179466414f123dfa404c3ef85b305823d4366c7f2948c1f251067ecdcbd84bc35755ba7f89863b8d8927acebb46cbd3d9f1e273b0fb5487adb18379db5691aa5da5e7af386e3f057f56d085b6eeea297b997f1fd0abe1a417568b53e329451ff9252bb2d6e53209c25e871c76f9a40e6001d5a0c609cf3c1651fea1cbce92a92ff48f63ffeb362e88d0a67d6529c81f2b38dd3eadabc1309606f95b1a7a716d3a8b1a4663bf0f096b9671dc7fa37a4af2e30307507f8200f2c62d8e934b05852ffc81c70be51ca0e2702019a43958a9400c98a5b96c08567ae892a709d32e9f263d14762cd0967d8d33bc7d4f1a212e889b4d4ada6b603568f5dedc0025f81d429c21d5bff5294f38d4f0f85974f5d0ae6aac52df1bbce7892b02c0b313767c66a1df3247a56ac1081c8aa2418dc2e0004cf267a67ae87d87856d7d257f05f918f0289c47034d08b4c41843223b4d4ba21d9b4c974cd2341c07280fc86b63238875cadf2f7811de426197a355dff20fa10e2a7cc2f84eaf85f05fe8da31a7926e99afbaa63da10505dec95851796b3aa6886a99c44623723a9abcd0b83a36fa371b5c67fe3710959e8a1051cbd78a9007f1ee73c4875b72e193374ea416c2346f5c773875cbd879f778292df32d6323e4d15b186027d78442d20093b5224c23760cf3f73b3003dbf2e215b9cc222f92d2c6840ef33532b01c343a172b29924e405ebb8745ca28982a530dcfcd9c2e60c28722f1ca1b6ac72896ef1d71ac960111bb1b8277337bdced5173243bdb74ba7d78ff2787bebc8823af8d91261021461a509873062d80e81c58219b45ccfc3fabe19f884e3bac571619e98e62493ed699f29b3887e3676d236a09830c619dc9628e3b2733751708f378b52225d3df3ccbdfc4b45a59ca8020f2173fc7c37dec77ece2bfef7311c82c13efde385fddf1e7b2e8213ab7073563280b394c9dc85549b7d9453df14d7c28d4a5d6aa9bc8b379e6baf098c7567f842cf974d23c614f51a0a9599cd9a8603d82c05ba66bba2c21cbcea27a0ad9ef1088b0138b9b31794a0ad11d73bb542e2927bd474601493589f19b3890bd4765170e7ac7313e0d1290590792878a9cfc05aecf0b98e880be78e236cddaa37e23a1407729e83222c2d2f34e17ddf92627d14f74b18085e3837e5893bb41b4ac1fb4487174314d491da2e2c18fb6cce6ceb1ea76247e9d1e168e67fa9b3e963867165738274b75d766a24b9edf60a9b29f56c22e2f38d4e1dc7a7f1c6485582fef2554b382f49fa70327f60fe022e00e159050be86152f970da5680b5ed4945d173d3284a77801139b01bed9b9013366a5c41037e1b8f131cb79d7e04fe6c196fd5f497d42df319c522a0d6560583f3e7fa161ba919492a7061c855c5fa053291f0ff330e280b17f637df5a699cf38e166b9513ad1494d00cbe8aedbbe9f57748013e47b13f18c9683168cd776c42b3198d720c40a1a7d6214a439dcde0581c61284bcb016d87758c29fbb89dac13163b5f82705ded00b1b148564c4ddef87d876c5cd9d32126e0028890319f49052be415e18820aab9c7e2a240dc447dc209bac9e3e163fe6e330dcdaf8bf1fcad532a4e5c31b33b2c4ad1012dbd5f64c42798d751d4b596dbc9c53573b70514ca64ad14db3d9c65fca641c71aedd7f5c021f20d84a8d65b3f5d42d010332053237b1cca9457546cdca24767159a1f97ea6c52b8e7af70c26b122bcecee6bc33fe4cda3a48cee9360104310116039e653fcbbdd61522d1f76feaaf16072da4bdd4ae639f6fb9055c097995c92f100db1576366b4f214ba132f6d97d86e23e96923b7d6667beb96ac08b7e6ca05de9b2c54a8b2ce71e1f4baf964cc1d5df26f89484d9b8e12e8b532f7d731376a27ec2bfb8c393eb2463dcd380a4665e7badd6b34eca903e8a46fc5a342b6bfa1c6a3a79f8652bd95814a85db72c5a64c7c610f198ded0a593aeddc3ff744d0605c25ecf0181ffdf6709fe753cefa6a6979437272466b494f75b15bb76541ec5d0a12f8dd65707fffae195d68d1c6db58d91781c243d62b23917c100ceb1715c026a1a2e096629a3a93dc96582fbfaf96eea4d9f8bec048e2f32347d16b298d8904897913e1f97a49b4447ac7d3f047a50c5c939399b803b2ae2c881a840f528576e34a0d1d2fe5de506c63313be67ee4d9d2aaf4f90767344ee50d1b0d93ca83664da207c3bc05ee030354c41dcdb1502de8dea5cf4fd0f073192296c168c7c134f8be6b3b75340c8a4bd1b941397a7d826068a23c6815288d8757080ce9baa37ef15ca63d92b134d8f6607111dd4b7182a42bc7b655a330bd71e15a47da7306a4a342316544ae6d2e87fae67bf0975ad89b602b10c06cfe638820a0ac86dade743ef31c29f2bd3483044a43e673aa17be5877f28282b93f2387e276b08754957e7ceb2509f45d43b83f0b9a646261a9408479e353b2833e6cf6bf5377ef7430d0693f744d2ab7550b59532db26920acf475f3ab6df91d56887ff705629bcb841d60740f5b56ebbc8105250238b2bac667bd1c7d7000c2b2ab75e5526e5bbabaa6dfae838eddfb626148fbbda98ee5f85c05fc1e057e930816d967277026ccfb9d44a542a93365ae0fe918d430e164987c4eb4c7deae2c50923b673e06a48d5c53070c16ac2df813b3c46a00d1660f9c5c66951462083942c14940aef2082013b5f2d6eb6e512a540bd0e5e84ffc233df866f2c762bd4ddc7466b72e43138be0deab7cd5d010644784ebe97305847b6c3e0f39b5e69343cca9229b24d79477c287fd52c00a27afb2a88f0e4b75f272807abe2ab888d04599d275bf1bf6e8159ba29d87fe448308a3fede80080f57a58f25c6df0050dfaf19c9afecb13ccb7075be0e89c4d095ec6df6c6edf219be1ede4234de9cdeaac2826d8b153597625cde2dc200c3bbecf5f84dd10903f915619ad3ddfe14c84b8bd7048aa303934b10cd7b2fa2c28da0a325755bb9d99cede6a9c90be87c6028cbb1a3bfda62a2da8400a500945c245d02f5f8b017cbe9640919faa4ef7238f4cbc7cf1a152128e0db07ace2256da01fe312911a364284356c445cb77af585d7a9e4794359967e8a673d5014068ac33fd686fd72eb150b780086202e6484a0aa0c59fba94d2654717b032425363c24d3bf72f7b3858877f9654476ca1b4e2905d87aa79f4aaa3d50db03ea7ea85481515356a7c8760e2445072d643b95166b6cef718222265e43d040c803e148da78fb46670b5500a22bb8e41d0d577d77749ea5b1c3433272c1bed9ff78c94ca1c673b9dc89f460cd2c87319436e97ffdd503ff9e0684bd9f51b31ec0138f5964b4c9821885de646294e82274106aa822702bd379e34640906a0852666bed575ea47f47265b9a8c4d3450ac8d3db2e513ad0fc682fa3f132fffba1918c569cd56bbb01a8244fe867304140319f431112e06b03f9c7c28092255cdf1b9faf2ed618ea4fea12cd728a7878b40ac497bf292546a9b8109773647181703d55b981fa78d5a7e2d8bb8750a622faa11e6114271fd1a77ea708de6ff4634ae012a332750bfd8bf122e1014bb5ddbfa68de12cec5d836383a27a82a9a4b5243d67d31f36abada6475b44587ecd7e375c242e152bb224f259f138dd63b8beef53bab13c02e823c4d178e0f735bb11923df9fa122bbddb5a6fc045c1dcf7de145a72018ea03b3c2908b93b6c23c7e7fe05537bae660496bc72d7db519cf9fc82d08467163b032f23abdd66f526e6113c53bc628dfe79e8c98cf8ae76023531213c5f4d223fd1409b382f12d63662ba1a800553e09256f518086944ee7bb08ec4ac3b671f477099d62941105463fa8600a6fd671e2f0e428b78c7ab7a15c217b5b7f487bf1ea73739181fe5df600bc6b029705c3427a7aa244c96cc295768bed8bac6f44318b97b3c16b0cc1bbe86358015e7a1086be0f56874b88c711524d15ec103bc871cd350f134a85595eea7f59e8a97e4c2eda5b2cbde7647bc8872f6b0e7e065e16c878e99bf05172465ff30fc6a7afcea6b4e00827102d193ac3a0b986eba9f68b00854b264b3002d2f433b995c268899c668004e8dd727cc9ac28410127f8ad1f332defaf5617beb9170a46d3ad2697ad6725cd3384b803050c196ccc5c5c3c56976f6395675024306b46b4b3af14c2de37b716d0bbb1d2a2d59997c105e53803dc6a859f0e5b562039f578ad064fb6a610e091e79a46c0747aee924e9d41f8b969855c2d7f72931ce031a3ffd0535f8461158d5184afb55c1f02e8b835aa2994b2ad4864bd762c5d60c2d9a22cbb86db3a343b402742177331d56f39f106604d8d256f91079297c1fb4bfedb20acadd009f472f65f13a798e5dd5d62c6797e86361db5192cdb7c81e8122ff6bf3886bdacbd5b1a64217deaff64de7a55a4026a0261f19ef75790a4c8152b1648617ebc0a7d534005146d66399f509a4f3461ba27720f61ed1e2e8b425580db019fe87fb407b2a46e2f4a675aa5a678b2f1685e3b5baddd7d1e9135ef38e766f3511d8eff17f37dbf6774b919e73a6b12ead71f4f98a470d2d21ba07774c8319d80f5a693b2dd4f6cfde7d79e4854fa799a8c4328b12afe73be73b81a294b978112db73e9f812e4a3fa4ea1463730ac110266d5a00746e49afeb5425b0859f7d07114a09a58c7d750fc3b6addd4a508f04bfbea144945c510d0950f1568a577bf0844d2bc66f239733e6db097973b559b31acf39c8e70951310fa79deb07f65d1e9372f539fc4d7dfa4f283e6277c3c041fa7e08adedcb88a991ebf875247e8566d3aa3646e0dfff486eb218951d90df5f42565563d7c9c5773ab32804d2ce872fd1c9c94540a25dd1fde605c72f17d1702bf075a2f75e2df2130acac8a7bf4a769e6f00db056071a08b0ac043b4bc988f820fee7507041d048866d0aec96e67200012d6f80296a2395790db610e4790675986bc65f422e6453c2274cc7903ede0005699c0940442b70e960b70643719b90e0cf4383fa0ae1a85cd92498ef8448c43d8c02da8b38a45276926d8a0d039af64b0bf16da23b66332e1ff74575ea03964bdb65f7b88963ac72d0949daeccdaf914250b7056b4be214a90a2ccb55813c4a62283aee7cd3513da1ab8c00ea602303ffbe2b4a175341b803d841ef9891096aa7f0dfd51f35511c4189e15b064db5b2f439da9feaeaec3e874ea71af15cf96a25cf6eac2ce0bc6193479e4e35463f7970636824c6ef9302bd808109cd9e25adc3ff73863abbf351ac1531226115192e7acacb8ade0c9a0a641555e987c0c87d36b01a7e2a4e963e9fea515c548b00ec1963a53acc4e13059994eabbea881c893402887c277dc228543d702f6feaf0fa435c44743ebf8fc458659fd27b4a7a295fe307a99591f679eeee756797464fdd87a17554aa1dbd71ca461b1f11669e258cbfefa56cb758c53da3545d496a20d1d70c35e100cdc9d25841e492b2020c2ad89a303cf56b15662faf01b6ec02283d0c641747abede92688a519200bd9dc3c6a237740bd744419ab70f2edabe6b5935f76bdf2cabb64c59a2ee430afbc155838bb4e0b192bcc3fd5524c1b1aa77966e32ce233a801f523411d506fd2144f4a517add0a40a61485b5b8409216a1113835a90ec2467b8171a26b04a575933f92f0e942ebe37b6b2ce4e8045392ef19f7d25f124ec81410247f28b8b009d19b6a00714dde1bfa37de8445450e9048f3cf802a5364849f10b69b5b7a58e29f3b50fc7b68ffc4f2ae28b1901a97e0541f483eb58feaa156f3c214ce7847a8a983773de5fb91c4deebf2caf4e157fafb303891c46592b7b59b9316e2505503992374b000dfbf826334ecd8c5d589b599773fb4d8c294b81260c6d74949b227daf48dbf41caed53aa4b0ef91353fae999432dd3dac8e834f034a8f52a97fcdc5f185c07fa00eed2772defb4b05a62201fde195bc37790e73ce9f95dd690c017c9f50dd5e63cc41800fad565cbcebd2401662cb7bc7865cd9962d58acc6391f4892504df167df7a3420eb6bf1f7da9de8ffd7c7aeaba3d5bd7fc53e431dcde99a74c7b080d35f65c776900c61f854c45f23c849fb657c707414e7fbd82a9ba40898af1a20633d5bd60826f653c67a91bf1c91fd037087e9f2c87f3a27f5ea19ebd1c5327a53f2dc87d1e84cc61de4ad22b5617f8b532ad7e56e93dbb7a9dbf422eb798877fb0c83833ff26592bc6aa461626d414f343f07918c9b4bcfcb8edf7d7d13f4ec93df61b10efea9470012def4919ed95bd3fd67c4dbd24dc89097be2b5b2bf2daf6c2adbe986cd45f39b513d4f373759c1aa43681cec0a9b17f598fc83ef5466b9fd41961f63bf9096de5777bdf7da519b6fff717c28589706df6db3e1ab8c27f7a845dcb02c32bb132c0aa27f394ff25745986de399a3e3cdcd47a777bf476081d34002b0aa360d271639afd3bb9713113a38a7137b14196aa9530a23940d620136e2a3fec675f3a82081de58cb90544363886558c55631522fa84d709a9c8325fcbf8070a8f1368c62a000cdbd678d76b8eab6e675ead831369b905e2f58a98a78f034c1759f52595fca7e74a0902574616af0aa7c1c1e80b03fdf445f8f9be7c0a31c3df6d908d742057f371b68ed95382002ffef6b488f75ec17c5f63740c09133b01db12fc24a7add86e3d4ff2679522d13483d03960f7ece7eb93b25a5c8bcea8415d2438724fae2c1aa2cc8d39ec5366bba8f7ea6d6c71455be522cf909c0da48e3371257c33bf03bf0d5b4fb6ec69d177ec434b53e629573ed6018956e35a7b9db79d2bb6be6f063104b1c8dbfac0fa0a90f3b3db8914a463f7462020cc732e6499d9ede72f79bc1e1d84aa5061684d1762ce2bb0927a09a1e18a8ec88634639c1814a7488e5d6b1a2bdd616695a86dd11c8720d67b98dfc244076bc6ed0fda8886955fb9ec2f800cff28915a4f56e265ba31980394a2aa8c889e34289763e021616c9e9163eef70c59062319d35eb94bf2f9151b99ffa366e9f848c1b3c7df01c0d55bc5a4643ed9ea9c220266ec11f6620043358ef246b8440f1054eec555eb807d0a02848fa06328797170798315a034e91d4ac27bc23d754f669b60f581d09aa092b0b687eeea1f68fac631a29124d478880efe0befe9602daca6cbb7e7bb792c92900842b9e8332d2cc471f587931ac239d0f7a31842e83bd9fddd85755edc21b878e51c07e9c2ff1d69a7fa7a276217c530e4dd43989c5c27d3d2dce96230bd3ddab3b3f6bcd8c894133eface02fe40aafb75fc2e8891b4257568ec6c9150db91128c84b9a475c92f4a7c8f2748811eff43704a264d994c606445bda0a263687690e8100c1188182b84e1a9e0884eac508595f7e29177b1830a9f449eeae107cf9a62ca89657c5e4f0755d1fe0deb146138bbc820178a8516e296204693450927e04283cd41e7f9ca4e848aae5e403718fef9e56269d9073f37d3bad53d714384560666d7f49da3162c763982c9b5f56a4cfc8efbc3b18bbc644aae46ca4c7b2ed553266b5f196232194d3e7d32c0c6d6921d96f6acad7b4db9a406e5ae182f091c2a237ae2cb6fc9f3183c70d0d61fbfd8e366e37f0769896a41a99c688e859890dcfa71f9c14c5259ad51b12d6f650c4b16b526bfd3d2ed7b1638e0098907b9318fa0d6d80098fedb848b728a5a2adb5ec43617a7a5e11ca601fd3b07630731359c8a16a7ddc465ea73ac5fc7e83a433a14ede913cc39628eec7f3c0a4cc979fef59139fb85f5d94772c3943eb427a56e8e9543fb036de86393b75f08d0cded07982d59129434efb25310f7e46944634e47af1ae934b8c0a8017cea4d47c99a5f3a027dd83bff4bdca749ed6da9ecf23aa26ce910a9488685618539f68dad1d163b20e59a9e38f335808abc2928c58b5ef7ad06f7bbeff459586773f143b17d26d231e313f8e09d3f7b53639a69a9a58bd777826f3ae1999a9c69903725f8486297175952120d0957821350d9d4089771082f60123501607b2f1e08810a138af3585dd899719d28827207d4ec2733acb909e7b9a4b496d2d0e448db7781d440ed27d6a059e9d3efc93027def3a1dd193e2022298c627771bf0893dc21e93e1fe7b163a477d3156cc9a69fd4980671e41c8221d8b94055d3803123fce54c0756c463f19d00fc1f8fc5ef4eb45e2aaaad72e27e50ebfdabefe4b99cea71aecfc03b2be7f36daa24cfbae832e7a4c7f5fc7b18a2a1f1470cf58eee83cb6ac28ef4f2c921321695d9d478c3e1cad8ac0b76b348a05054a5a08613a90f617228be884c8ee7180347b1ca350ee338818569078214b7efa1a8a820d2e95b3886300288c6f73ae86ef61c9805d3cb5218bf481cedcd2c6579840dd9f6be9f2b5d172da7acc5122d4e542ca196508669494159572aece999fbcad5687e7d5c870984871e3d3ff40078a357caae85a463aa227d1c40904f88f9cd7eda9bd1d90523c78ebb0b488b1db0c6641c0149e4286d8e4d3b0ba37182d6f83be7b8ba76d6f43332326c00cd4b1135ae11a32fd9cecd650748c529028c5c37fb7db0e8a67da819c49452f9fd5632fb562c076c768d8ac24b1c5b6debb04dfe2e94628691eb240046479b2c2af3dd2836e395c97e9417ec1a31e96035a9261abafbbcb0d7703b035bb254129dc0fa6eabae6baa862ec32ee46383271270200af64c9e22c32d49d9ec38d9b6ca71d91aada5e9c56aca6ff7a9e2469a4440f103a00d59b5a087c58edfc1dd4721b9642f11028fb385a6d7349e7114497c7425725ae05081951c1832043b2c9f13b4b15edf97a49d7b3e779aafdeff978c5822cd539cef300277ab6b40301a69e6bbd8aa31d1757327e2d0d518ba4ba6449e0aa74d993abc7fe60853f86a2b5aa824c72b6b6ef0587bab6821c0a74d55721d9d30ccb5c407ceff68b2b892b3fae39b7c9596267a6622658adc6fe622f83caabc81a1b3a0916d9d1913690bb802751346192ea92a91027f5e5e0d3e22772b950f5394043c7d07cc9f592fe2fb23f916a24987811f2932cd8598c319f2b8490da10300689d7a36b088a34d11795ff6efa1ab9daaa54d628199a676fa7a88f083b1b4debc61768571ceb0372089887834c5900b7c2207c582d73db8b25442c53ab89e3de2b40dbea21082c915fe9bd285e0c61ced8371a0c8d66ed22acd7e45de2fdb701cb950fc8151c597b75ad5a3b7c048c86627971d4b6d6e5cb7ffec9d24cdca5f621327cc3db04a965278881bb13b7ea8d1f34e52292b199fa2072c6ca55ce7413ec3f80058778e8dbcd9fdb323ea46d044f8ff70c6f2c4c76913d8a3c616395ec5c4daac2f45cb59c7018fa68839740cbbc997e810d06e0f6543306ff26caa76010db2c438e93f8ee317199ef91a133597e0574f05abbc0f02116a0ab6c56f45922ed34954e508cbb8fe3e17ef15b854360b066504adf567cb8f62733562d679aa9ebdd690a869de6428147cf9b4b0d5042498df4634d13d2a99d38d06d834c8c45aea40599d71a34799ef976e28d4cc7c7c84d92bbd7973bee572ea63a38cb3b2a5fa9aef7024dfae9c2248a594524d41bf1c0b3d6b3384e6239395d9c8879e2a5b8c7c3f3b3eda557b1a1af144a645427a5abca5cfe3f43e97496f53c7f10ad63f82a762182d0a46169c320b032c0db22e3969e9289c905d4edc29b25feff5853317bfa4698a602f86acbc147a70846a50295a3b535d2ac9ca96a267c44848b7af038cbb57a8bab79e6fd270979f8b72bfd4880fe034dda71cd7fd4141f94a7ce35b026685c13c397655723345c1c27f2faee7d8c9177683be8c649f9e089f0912e602b9c36f4e2056703eced57b9a598a6af899bb95392cc8e456024894df4c21d2f5ad7a9ca0b776be453b8ce2a0ebc795181607ca432dbd1c3bfcc6435f28fdc5f719c2d96aadfd27becce9c8276efebf2c25c46429d26f88044c6747ee267aff6df3806a545d2ba9fa5410a5c412c76b4156f8efa56ddc7f3df06bbb52bb33a31114114a56b5efd0fe845d6020a9809dbf8712336c4538baa4d2a7d47a911245ab36d5592b430ce6f1c50b25bc9f9c122bcf0dc5d7a1b8f56f4b09a111332a1acb8fb0b8744b84af490b21284686c3ba95e7655b6905eea6f0928596f009d5b39719e944de0644401db23d337accc4a8accda9e2c2b5407df7e5964eaaa041cd1edf2fae72292c94d3993da2518dc657d7124161cbcc07d430e8c9b6f9f5c0cca39eb2ecc30ca64ff9c01f19218412f429a25d7c1d0ca55b49c862921cca3ff8e33e7aa0720871f3166573761c0dbf670d629b6fabe8b7d8e0c56d889c9a19a8d95ece1f40aa48929e9322424b62eaff17da7f7802cf9997894e82cab4e45ae0c84fb420f4670e2e92201aa4784dd31bdbcdee159c128d351db780dd8b2d1d3aa2cbf090cfdb5c7837be7aa5ed128055f4846c0d2333cd909e99a7240d257cb25bc65363f715947901b507417314f853d63c56b6ab9d9c6f3c754f170de41812e784b5e6e7bdda3ff974a267f041f57add2cc7b363d0c211f0290d7aff1cd8693272b18e3594bf3020aefcb336125c32b3169d59fde4fc046aa67af55f7b784acfe4c018f86db53c75a0b2c1e9f1bfb917b106b38325dfe172ffe7c5e6173378da59a895bbfcc68e43a34aa064e9a6e69ef200da31cb6c64f42f6819e0623ba7ecbe8b88aeaf8c8b921a7ec1117334e1a99cf5bd018bd64ac9db02717e22986412470793ba9c4511fc15f0e9b2927eae19f3e30a35e0fae93dff59f61b7ea45d9c4819d28c5322d67e2be18d03974310d693f37d12a0cf9bc7d7cc3db4147481309eb7e287c2a22a755c1604a3989182db2234a02dcbbb5dd5ef4bd2eace113efb2e085313f5b734f69c54b9807f0388a14db03ded5e9438a38c66a1c90f14873372365b4f9966339721733c644563327d65b8613cbf84798a8b04ffadbdd224277c4baf2bbbb5fa8bc68a571422c0dd4f5611bcf501af33edcbb04e6f9448e2295389627a7f4e485da57230061f22a03dec001971739f856c494bdcdb6a676159ec34b450affeecfa8909d95efa8acc6d94fe6755a99ff8531d393af6363ae0f171f7dfc1337a54f34f2a0ac4906499fb04c8b7b2a7fa87323ee0d02c2fe400c7a1613047a8e4a3a29a3b0b0d7bdba3112c428c221ad6f9b04aad8d9350caafdc6e1f2503acf232e10f47af88d7c29fb16a5624d378ea697cadd938a42fba246cec96fc6f7d9da43f836ab86427cbc2c7e0a80587722b888cc1737c4725764b5dd6cac20ff4422d6ac50f6e2731767fdbb97fdfa0ce455c405d0b13056fb6ea9ecfbd29a004af2d8ee29e90a45b1270b1e4bfc30322151c3bb01fe4b48bf36adf21bd43948de75568e12f21101727b187b60ba1d044649140764a616968e0264454843eb6f26087ab6592c2f70cb71fc2e42eca58eb1a0bcd1fa0b0effb732766fd970c2fd55831ded3ceb5fa44c4affe4e0df43b3a9c2f1e050eb5a5ba0b3838aa65c1c0e5ab56b9453e85e9ff3a49cf407af468bee959a7eccb0ea1284939f3a21483558e9e6fd7eaa1f933dc15fb26fb9ecdde7a05342af52788b43105dced118ae4a9aa994e8d45c3e1aa1d7dd215172f345af4297103a49a4f27ba93979815c55f106f961adf9bc3ae2ead66cd559d622a6e9ec015fbbad849dc72960530b783e2c45a01c166a23f4b783c1390980a16f4e0019380c5c0ccfded5ff6d2889be10ed2babf2e829a7e51a00fd165c51ddb50210ed6e74d3ee9d2e088cbc27e3d8f529a52faf51e8f06c8979e2af609d6f344bfedfaaca9f7c763ce79d25ef18e6574c491d61d54713e4821a55968c514b0dc744e170f4949408c6ddfaa6ccae89852ce610fafdf7811ab46f650abc5d2ca081192d6df9ca374a2a1c63aa30411e5fe24f160a5392fff62e45081e3a4b88d4346fcb07209984c451bcad224fd5330e46cc8b3c8ce9cd7761515079bf518d320788c12920f4f7f9eded7ca55d0f97af95d09e83838f3c27e371a63fcee98cd3d869ad26ad9f80f706ce498e2f8e9c6eb69b4f161ae7d3cdba784217a8540bc9fb64709a3f17a13e78bacadaf8228c2a3b7203417d15638627c279c26454b90ac42695b8e4b8da7416ab7b7c1ae20a4aee8764b1a216d90ec42b7b3c9bce904e4e3599cd934e9ae65690bf06df5b2be0119a1ff9340b98ed74c1c936ac1bffd02f297144dabc91d30e654cd439053259b0035bd8d9742b0240306d99526f770ae13444cdf1eb5a35bbb6de386278ccac3b4578d4b04f32e2264ed49b1fd284f79ceafadf6ab84fd2e04ad2713aca1fb08db8fe8cba6b57428bd125f0c616a010b01a86c07407c478721d8b36d9451b65d404e54391dd48f4d68c6151e26be86ee91268a34d17cdf5e667b0ca4b674f2c82b239fad1a46cad485bf0cdaf3d4d2129b3ca7676f96ea304b16b085e8662c4faba6def0daaa089d56885ec4bb13729587c17c236941c0f2331de00f8f7cd88f78140322d51b350b276fb19f3af1b770b19da508bb5cfb2b04a9d7ca3845036a917c1035fb1cf4cdd816c7c2ae9652eb7810b4264e1dd1b1b799baa467b06aec4bb3b8d42443c7f6fc3613904d0974b0e5ff64fc3ac5ad6e9fc7827d3e13e0b976971de5a97e6b6c1f90acf2844023b53bccfd0f14413f9ec9bdfb4a97488223f23e929033e4b3b9abeb4b101459b622e5fbf99ddae2fb79b9e2d62c24c43c1e11eecce6c18b2cba29a992ee2697b78b7ef72503932d815c473de081a0a9cd89904211708e81b77fe36caae0e59f8c29283101965242d6d0ddf279f758450e0e4d40bad07ba15c8becd2180ae14f576ec4294505170329c9185f13686142c20bb9b2c387e74d119edc7e4eeecc88234c5cde17500cf208594741e98f1a74e789822b54c1b23cdbd003727cee2fcd0e03cd1b9ad4c72dc4d9929c861b3f9702139182fd516248ea8548835b74a2c12f576537b0f6ffab2203294d2f8e83e468ea643e29f90eabde59faa66a3d4ac78dc770b7ccd9fa523d4f29a8f50d1d365ee1c3d9020941672e49c91c1d78eb6a00a283c0820511ddad0fc67820f9ff26314fcf6649695df5ac7be0f920228dd20c8a7b0f6154302865fa36ecfc1b49db1e7ed33451ac24be29330de1fcf6a3614351883a82c89180eba7f7ee6ace5e1f8aa261718fb0d23e2f9c1b857b1dacc7459684691df1e0e11eac327046d2fa95ae5b97e9ea17163f5d7abeed8c441a6656c3f48e7fa4d7d9d42bbb2c8f60974f25c2e30b1d60361ed6e96bc8b8a8de7a6b7d85f75a3cd9da8bff91444e99be30f1ae8e0285cbb3f4da0a7ec22b37e776356b1db41fa8c0b46e3b80ac01786fe52cdba94ff408b7e1b6be5e1f203192c3a1abda8a65271265844adb1239315b5c91390c2e58408cc00b6c4bcc9b7aeb63a7742467c1159c3edb98222918348cb28d8f62037b809414f1ec7444480602693eff0b12a1e422ce564ae7204c7aa65874082d9efcca38a968aa3a64718e662eb8182c6a48de2cdbf301af9b923e6afbde858b44b93950d10e10cc30f0b6f06f27517c68353add5c1709eec26bfa846d69afb849f4273298c8d047db6d61843eb5a9221e3452f8aed84a92c777f9b0e71c6163767c11da44d41c311b38702adafdea0ee9343456ced1b73b43de45ee9d076498eca5937bb56996d80de7c4aecca9fdad3aa956a21e54c4743d00905e7e63c7001b930f28954c893c1f968f2550d9eb71ffa04ff0d4db57445d5f9a144cd32d657be7c4f1e300a528084313505c2506dba8fbd080183fbc1ce8770fd1c7638ad0aeecbf5e2b77bf3b7a7a2c3801510af32ac65cf86b57aff50b4a2e3b3120085e0106daf149409c55f535c1c99d0f86c0ea018fb1a10bc555f086135245f8104c92e37709f3636fb99eb774ec329b91451cead4ea541d8bed65587b6b7d28caa8bb23ec8dfe81bc7be238964eeddf73fcf7943675f3f8cff7bb0c870874359689f3c27520ff23b5b00375d063ad86f11b6ca1a0275f62546a0874f76a9f912ae9178e20a9152b7a3ad80fec679216c511a0eb53ada7159d19eb52a8766830e1cf544f78e797d8973d2851ebf1c9bdb35772f800ed37ea00263072eb27237e034fdc6d94df5eb79ae1749d59757b8af19360fa0c1505746d66076101ff8a84380a0b23c99916dbcc17b62bbf1b2242fb490b351b8ca5a9a8223e80e5220f4b98e266a5465ac83670c1cfce55182d18256cd248d33d733762a53350e9fd8b0a376ccfbe1a531bc5bfcabc7491e060b829044058659701d690b0c6f1bb826d560106c0a19ff259db52977704f7b296316aa505fa488b6a603c960d24e033f9e645bf4edfea24dbd13024f5961871b948237ee76493d0d4c831fe1f18f1921e5184589375467dbace43472398e2e20f4ea9f04065b756d81748bf5354396fd78066e80dde8b94ff2ca837283f033181c8cc036ba0f0d725089ff77ccc9e7cd79cbbc1bf01a71e639de0205c49239543bd0dd08d856739b1373192e85586762c6cac9a7b967ba51ff40555487afc0efc954c967f93b4dcad4e0d696a1c6a7251f4a22e2323f367cb179dad36497db86f1fe9fca89518906fe233cc64f7e71448fdc38e10de7fa05bc2cb0f52970e8b0df59a2aa9be3110f9322cc05bdbc9707cf245d828af1c24648a19f6c12fc7d260bb21e10b1d6f9a545fa70e5c454832056c73f72e29a0eb0893794b482ebdae81310bfa0cf4926ee4d324fab58492ef2709a89ec98d7687d5ac90848f283357b0e145bb952be26dd17283137635a5f2ffcdf143278b11b2e3c83207f8128e5d10e8d989d8f80323de8d4bc38f9a799b491018681b260b38b33c71fe980b858b510042ba3e1f84039e903bee6d40ebfc4bbc9153bcca1e512224c6de06b214bf35c2d16327414fb9fb1487fec8b167e8070af0cfd6dbc87aca8f7650195ff96dc2661671188b8a5f5dce6050a517496321a9ecdd694deccd7a7d3c64d78219af997e9aa790aa2c4c163fde6bf675e30609e59ede1fe3b4c94eed4dff5fe62e8c04202db087bce1ec41439702429123e07a8bb3cccd7c3f57c55ec909ae1295a8ead8a2a568f516d6062cfca47fbbf0d1fdabdd838cfe185b4096a29bdd3d1835bd54dbf1c303bbba4d57507f748cef910fb0710eeee6e5ef64ff37eed64b56b77315c2a67c015b11dc8aaabab4025d59ae081d8865d77a7b53d069049e16db76645c331e7b0fc0de106c334e25852592eb239930c0cfdab74681c3b326bd75d11fec321842720d81ab2aa3b181f03fa7bbf34b9e50719a2d812f10dec37a84dfb7e3af719c0a0207d544825217d41ce305cbdb35cad6b76d655279a860833dc962c012b1330683b220e24860d6c50ae8416edf098dd594a1c0d7f71d92b6877e52ef738aedfe6133bc4ce4f9191181b9d6056f5d8e3450dad10d6a27d95f9dcdb5da445ae1b6f07969859c04dec36948717dff7d6f89e4bfa48d238fc239102f615f233811b31431e8fcff19597ed913d6014a3dcd1c797adc6cf5018c750bef98dfa2ee62d6b377f976528d493f85a5b60f73340d893fe0d5d79484b58e6aa58cfc6e41b55b47c5876bc888886062fa7dff954326bedf2d637959ecbacb9219158082a5a1ace7a2f0e5654b5d593726c455da33df7a41ee313dae38e02113d3b236e77bf3f5da4e5f3bb12daa3654abe96a11bcecb842849217513d5002367fd3fb6adaf2840f129000b9dbbb544caf4327fe706864367e3e59ac117598ad0f5199210b152fb9d5ecbd1a8ee6ddca00f36ae7b6df237caf8e747e771abcd02aca5e8fc8e3861b8cd293ed8974ba0c209cac9b3052aaef18c856f88d3db9604f363e2db88a92da8b86a8923e74b1c8f6c923cb605447552ae7fc5eaf7fc21e30d75c94731f9e0425a5d397146f8faae6a3bf70233189b4eb402eb79c854763b1bf05594ff34fc17dd0fc07afbc16f02349a20eb757dec2cb0611255183c09e4115c5b4c8822dd0f68236924e8490db512f1090e5e93f82cd1f0c90c5d2e54b487249b5a99f06e41343cc3e1fe10018b8d2d0cc88b30ce83281568afef82ecd4a69b4d7d23a37b79f4c6618411d00dd9b89c60b05373843a1a5d46b702d3c2680af463427be1d1138869f5f78dbe70f123a2a56ebe77642c345cad0942c138b495a3bcaf86eb2f55a2166c698515b4227781632d04b43762d77cf2a20ae6904c712c305adb51aa1cea27dd2fb4d4136d2d6f12e9b5f2858d6ee1effa22cdd4983cb21471586983a7113b6abf1a394dc00a602b7ce3424f8ee3733d5c4613f5cfb0d85c73ac144095bf60e13de43c9a7fbbf7d76de71952806df500b8d54950e9f25d39a984b413236eeae661a18d68c2b42d5a44439eb57c3795df963e281affcc451fba599917a5cf504d0fef28937758c3a0c3c271a51424ed84b96b08155804bcf45439208f03805accac02437557662e273bf124960bf118764675699a1248f4c6085724255cb353f058079da740ed73871e76dc4c0562bc4da96edc1f1b6bebdb9fe87d0080bce81391514d93c99e8f44259fc757e90f03816672b54b8f871c745ed54b10fc03efe11aad8bd72f911e19b2c04f58ac6f1539b36c4f74ad384eb3e1b72c664ee0fd549dfe50b53f8ca42e41e51c43a1d3aba38ef3d7722201a58c3973ba1823f46967495435d01ce77018123c1219311e1d384b79324323e978aa4496acb49cee76fa6abd85f9f795a7450263575ebfbee4c5a330a2725dc05028ad2e5bef6b22b7ab5aac69637cf9a67c5f022a705e8f101d8e1cdcc7f007502c2a098c7114453b7d5d584fe8b9e0d093d0ba67c2d06e1addb50f3cfc230b2a5793d9bbc23ff919888ea225ac6e7316e66f0464af9521851866558003c507c67f9a4724fbac7b9d68ac230e661ffabf7029d43847e8b2ad91026e569ee6c0fb92121dbafe8dbf2c2298523fdf60175d46c50e974cf7b726876b2a8e224bcc0af130934e5f6d18592a7ecccca81a9431caf89bd1421526013d8fa691cc0cc0f9dc3981b5359bfca2a7807770aed79d98f66bc884ad71b0589e34726eeb6837512eb792ccab93a13e566666dd140fe6156fd589ea93787b63b62e4176dca7894c91bc1e592205829e6a92e1255ce7ab5b67672a1d77677be921c7ac49a879f963aae1e16aa67b68cbbb0394bb0d59c2c25ec087adcabd781894ad968759804968d59a8ae114d02c50a7cadd276ff5f89cf2e92a23bd98755e80b24a7381d1f6b1e2a40dddffa0fd7ff25963bde1a67b121f4ecb92250e1814ef0564599e8e905eb59c9c1bb740f1743f97a2788b5e187e8ef57ddfcee772709e77abd00201b3eface75f0820d5dcf548bcc607107d93443b41b9f0751dd0b8620a194ff719d9be3623edd36d760ce451ae576fb5113bea664af25fe6bcb29a26582d76b806cd2334da8d3723be0ef07bff65bb7ac5b6d1e63a001e07ec0424bb3b14a29f22154215ac7d7b038e63b321d618ebcceb526f4b917a6d0e4579745e2722110aa8f22bcaf9a948eb1e976d35e1b80a966adfc359aed679bda27f45bde026e84fac4010660e397db41fbc548729cbe5fbc89da3c9d26e71ce0cb1d35c5d1f05f078ee76fb26e4b326d34cb72c7ae786271b56d978dc95bdf4623c42c1b0b0bf4dcf55e818c736d8674a0b2083547b37c46517351401d7744861c6813cd271222b61853e63a49024149def75e159f7fc1ec51a1dbf75109f6e151193c043dc0ba177c52fb51cb6f9666edc45072f00fc9a65fd65bc691e4b59505fbb74cc51a89902a6d2fd9108548337817f6dc5f5540f40c9e1142eb52206ce7423727b8b08bc705b24b4c0e753d02352ac02f54cce4d62872294c94e23e591b6a4c8e2a98761f4a8ab57985ec36e48d127af32e7dfb5b633064d7673e895bd4d8d2fd6aff41db00f36ececd23cf0eb917b4357aad6abd8cd5176f0874affd6e18054e4619698b804b3a89e8cc995812f3f02fa602298dadfdc41bfcb1b0ded3c5e567cba3e9c5dafed13fc262c3466c38c31e163cfb2acba47d5ba03c8d7839c176f3b1e625d8af72db67d0f377b7d6950e717d320b0f01c44c23bd8bada8e0efcf09f38a42c05d212ca122e0de1cc6a14fa4c705992ac088c4abafe7655382987c58adbff3dda53d31c6bb12d77b778d224c0ff57b5c97c7389737872f68ebda616b4dda6050e927d75a58fba1acdf7409448e863190e77300832a87c4365e7f927f9bcaeb77c2743210dc754d1cf0e51ca9659a5ea16fe9eb034bce0ed392798166fffcf282373e51c0185694d996ca871438a45f49b7b608c796e4d4a446c44b353bf6610b0a51d7cf524b5772cfcde512790dc3689299fb807e904a1f851b97339990d9395c7c752b854844eee6041e3a4ea6c8be7ef504b5c96feb333bea4df7e6ea8fe57ae202191484007e503da2f4a130ce53131e2168913d2253d1cd96f38b6c7e2d010a97917b336beffb79b7c67a57982be7f2f1b17a41e7de42965254abe7fdb6b09c4d2a7d122dab105e55a6b54d7b39a464131d3cdc690be17153063281b5cd2c278e38674ea82fc1df6e8955ae5fb9be0f9c2e9df1e8d6e75a18f8c9ad80affe053695ade7ebb24df9c04f5e380f4b8fe2c8330c5943b24f0749f4bab0189d07c0e1b5facfd672d31e85ec92adeda5be9f8d56ee4b93b389ff82fce268b77e7df775cffd4ae6c89b29a9a9192b5bca44f5dddfdc4c9844524eb28e4af3b9fd7c2ab22b94e39a7c824fc8dac8ab57aabce7064424806342cd96c1e28bc4c91cc6a7050145dffb10f75e2bdeb73461b5f35ea15b9a873cdb332ac66cc0d53f9fa3e2fc7a4438a4881397d5e0328bb4beb629abf609e30b9a255ce8999114801d4a067202abb444e59e8c1f0eca39f2135dcecd261f376fc0a07e9b567886d0a5a56c8b7ce17d5cbab8b46a69445c93b02ca3aeaf460cfa9bb4eaa853d5f9db89b14667bda509a183499f361930c58d34844aa5b4cad007ae339301f16c57cd09e6214b003a855ceb7e37ea64d1a6748e0718c0fc2231f2d87223dadb5f279c7464c72c5df3fa7cd5212f4e9f4a2a7d149bb393cb9f74b9ef9366a34b6dd6de5b6984d0c48656200cc3fe65dbe00286ee302f69ba91f7a9718141a134c47848f62c3dcacacd2edcfe362acc40a93e52348680a513f8c7360fae90fd9719d7672dc7d68bbfe8ed22de324e431bc5626a0d27ee33a1c6dbb2e11c121bdb536520105615509014ee428f530ba9946b422d2ecfdb48042dc9e9f7d3c9724cf54e1c471a9ea0d438be4d03bf52d679b9b6d2f181f6dd17d4ed3695f4eb448912423b552aa40701d22e56d4a24ed862de66695d6f4ee4f4947b5a63f2d92f60c0f6e673183e0cb2241bb778063e21329270eccc88c15eca638609e1b91d885a8b9c6fda1cbb4fd4b3d560ff4a7936a7b67dc163c4ee07e7a47ee5788d4f8c379ff0bc287d794fe13a6673aba356d3e177cb00590357c15f899275efffe9db051664023131b5e6080773703a01e88b3d77c320ba1028a8a8ecec4b9c9bcb723e6215676020d25ff1b11be67a1bd2f6d0604766a8fd7fa034edfb6c3739fb9e86f42825121b4c52e381fab44162dee97a8c4a739b4eaaa94b99509c1fe2b9aebe704790e6c99b5ce02f73239b9a88c5eb6f233fa139b7df4a7c0edddcf7525c27ad81c32bb3dbef5af815c4c159765710aa8956cc0355e5e0e8ed3b085a9ed3f9aff885a1ad051d2d5459695054e2e3c07d19d7be791197d7a1ba2255d93e09b4ab5f5cb1a2ce096bea278f6e0199cb65773cfefe50a826a63b744b31a35d475f947a5971dc8de721c53c80253a56866785a7e8b543a6e832d1f6947db4f5131551902fc3d06729427057bd92bc6879c7a41668f6052deba7fc7612b37f7cb24b50616125cfd0d5de815e1cf77d1b10eee3f216398e7e5cc8d2e7023f4eb4a3d9754513c8b90a0ac717de06f5e9ec46eb8a2c15b3da66e368106d3a8caa70abbbc7e7b41a8ccc0230dcd7bcc3dc4d74dc2c69f85351bd85b12a8ca31bc3466f527b8fa6ae9237c7784960136f2fe1bbf4f2033b506f60d9de88f925f353b4ed8456ae2201b1e2f0fc99cb952b885a94299fd979869c102671255a2ac44aaa58451f4879f6a6ee2eebf51fc55fb189dfe37edb60f2d279f1575aa0e35b99684be03ebfbf82c2f0ce3727e72fef81e2e1a1401b3c74d1f535fabe0b2a8dcba6dd202052065092a57d3ce47f143cbe1061b766603233e97935d4cea55dd43b780a3f61fa574bc128edb44cc3c69059fd1f7f5446eb0f1f0586d67232af6539a181f3319c22aa62b35d71ce3bb4d68f67c39c89bfb2d6de9f2512e26d44a39cd10281ded5ab43f4c929dc28ca66659e270961350627127f0d3ae14e4ed554005a557241e4cac5e05c8e289a9fab10e3e45acd387ec85f464f05f5e4e3e0b2bb622a44a5fef780e6d2ee469ec7dc4bc5f2b63a045b30205fa721b084ccecb3b7aefaeb16d0ad193e8b615c6c6c393465cec0a8467ea418ded978fbd084299b9db318fa9b7cee8e16c6bf2d8350f3c892d6d2e2c22d055243bc59017cb42b19f040b2b879f588b7afca907069b58355dfd79b65977da315dc9ed18ffd7d06d7617b0f4396931e3e38ccb2678d4ddb6d2f540d1225a350749c446918d4f9d4bb2cb28bc68270bddfa4d718de459bbe865e8907a6e79dc5f0aad9de7c33453785e77a844ff5fb6c2f70d2e2a126791b5b8b782056ee7a35c298b7c3686aa91da0793c6e31baa1609b097adf5a95aee0534a78f6be5e4b9007e427058fc740aa9a1e4cac1dc0c4019735e74ff7dc4946d776134979a92b99607805cd7c3d4cfdf4adf32ca5a064e4f9383efaec0d1a93d2b72e9435dd5fe7b329492765cc73e9d399e390add1ffbaac16730216c993e3826c0b617cace25aa832637813b2df81c5da5d0052f47b05ca3aff275b799bd2eda0a025d201640976bd4457eb8dc76048380f0623383f8102cc8d71b52ead575b5469be2325c9c47363aaeddb933c85eaef0740ce0dbdc63c1b20eeaead22579317b0dda0fa76eae5fb49c4e5d6b9f84d3a2fda104a5201134d4748cfdad15bedc7a549c1967b613c768d28cba166a724d5890835e2e588989cfa46d9e657d684925ea1ea0a0667199e6a5f4c048724edc245227ce0d45a944d696b50a9fa2fd137f05ad2e00e239bbc91837801ba77d25352379141cc45854fc8e8e9e94c773a78448d8d4abbdec010ceaaf71c43bc26080b64163751de375cafde69d048ae68c20a676d2a8273f9763b88942903145f1272bd9731e1ebd506794c4e5b6584cf8d5278722c871926abbf84035d8d60afcd10d02fa4db3c5b5d3471dd6ac1847d5b55708c0522901fc7164a521a7d92bc1d6a490320b2f725061800eb28d4402be3b13891d9de3a25f324d78401bbec26123f3342626972606aeb656e669a35a89fe3ec697424aa9cf4ad300bf00dc8ff30f48177b546539a2d6b94f10355e56e29e005a35da94689fdf3a6728051b2d971ed73196651de1f2bcd7fa10f58e1658b500bc4acf81aeae617008320d6999ec509aed8882ec83e24efb730b802f4b9497f6cb2304e07fc4112db58524cf6136fb2e3b7060f11cb84a00ad036ebc9dc5b33877c6d5157eae100efa3973a68c97a24f0f01611a64c3dd35389f97260d8814cc622f2bd1f2366ba9a524bf0d8196215478ef7ab1f5010f28622282b8a1c617a69a62c1829389fc821a27ff14e6162dde3fa806c588f7c93e5214bda71eaa7ae618ddb299b604681c399f844177793d3f129c1869397a8c3922c78597c096d58486ffc63b5a0727becdecb882f147e41ec96b4275adcbec95e52100eb820b3993c867bd82e7d0c00c5542ed5676a225b7974a5f5f83285d6d6bea195137e5da5a37dee5683d3fe00e0d7534cb4834ed9a365d86f215f515292676d8765e322c54795bab9979082c7225ef94018dbb7a4c611163733bafd124127b4ab16f5451559e0a5b0b7bf90d6d5e4c345293a646e12eb9e615464186fb1f1059633caef4be62a71af89861e78dc9580e72042ac352053724fa9473688fe650a081cad9f9ac2ea34cc289861a9d18f65cfa2ee10f420942dac66e46924b602497e572988a139b596defda7cac35349b6a8d0ce4bcd87c986f8ec59aaa07d356f5c992bcf43708625b91086945b5850ff63bf0c6a5f0c90b44df9bf50f1ce38469bfbc00991cbd6608412fc19589fecedb6a88bc3a6856d21f957e445fade011a7abb1f974ebbc2c070def3fce5c0f3c97d042709b3f38936faac6acec2fe09d44a46e7fcc3e519360a0254e3607e4edad6ca0c943055c79574fee0047ea5d563429a317f1c0aad6800a138d7fc146c184a052b31c97bf65053a99f286d5fdc87fc861875f9767b769add054940f560bdbfb7470c4b78815f7a844d0713c0bdf2c5f3553225eb6b78f49c05a122a0dad79053cafb057a84a8e428c811fbaf131b7937c3e84ce3544d970bc13981d49345b24c774f873f4b86a1f8c3e918c18cb38418c73c8a977d3d4d44814211d4a5251b48e116fa85cb6e0cbfcf93995e9a50abf2cdf64aaa5c115a6a73e194361ee8956322f065b2e7465c4821e6ba414ba146f3c61b57e61111b8e3e1805922738277ff0040f69b241923a8f3850b36350d0480d352ff6ac3232c6945f5cbb2cbc89eab2a11d58f6fef49d2991f2b71b5ac8144a2213a91d4e998ec2406c41d03ebc7d6e6ab42ddc85b761993ad36625bca48ab767134c9bab4eff6f83333cf114b1c00a4fb5c40a38620c737386416d08dcc2a10b22febd8c4514929457d89b2c2f1d39c0002dab56caec25d226f63d9a5308c368036669893424c7db28bfe9cacf0e8cc57c86db087a7236e3fce715e1f6fb690c4f184309696e5c0692c3e275b59a9d5a206bea57bf80fe01a8216a5e0559493a1da056d812b2fe6e49c0be7bab62e07e7ed5e3fe241c978cc8a6cb66b780f020e5cf0d5917a039c544f385fce67a6525ae70caba7af8681a91a2c3d8c706451631ab274a4b53346ce497b3c2c349ed4036b3530337d7f4d95a2ade55e64de74fc3833c8e0be12531ed367bb59bf9ec3d57e8a004b589c2e7c5170f9cccc911020fb421005f81e84d1ae698105081213461702537d90ac4753e59cb0e3a160ec7d5d68237e095f5f233e18b7d2c5484f3cbae4871681d0ccd7ee8152a78218bb06ec30353f96d06d36b069b7537cc56d4726fce4e445380345570434927e6f54f364b672afdd194fca0ed22ebd70d439ee293a6c64a455e26911740947a87d9d6049072f238df86de45d955ff30c8c3d47f6af3f1a3ca247aa1e168453df4005db22f877cf048d19f76220f7558cc357c9b415f0469021410f346a9f4355d86e2c55a334b64da1566e46fd754ee7b2e3356008ccb0a685f5e951928b16de42c3a02291acd8695702c72fac548131cacd2be7e6019a8c4efaad4f84331e2eefbf3fe52b0efb27dfb280a41109b1685d8513ba06fe6f4f92673757eebcde7a00a8156b18558ca39e8af9ea9e5a713187b0cb6d750ac498989976a1176228bae7af7642661445344dd79ea518ed8426dce431de05c9372a68ff38a67dc5b3be1a1409d53b7bbbb1e0e6d4ee892fefb2697756f192c7e6d898180e1ed2db8c40f9cc19955b538bd24b5bb243d4c9dd58d5b049cc898fcaeb7d599d1565eb7a778b8d9b28a9cc7d736db1c4face3a0962f14897c5bdf519c42b7579795c944da5964649b7386aacc9d74086bbf438034c38d1db33e413723d457c673d689fe222b5a3871ce7ab07e7a4585f6f4885896f9311022c58a9155c119b604ccd0ddf85b8bab8d474baf3491f6d34465c8398da2223fa80588cdadab35bfad5e83d0f667d21299dd28117ec6a53b061dbb1867d4eb509691d33e6df4271c938c1c2364d7b5d827cddbfdcdbc382cbbc39331550afc9ea0a1db58172770f2fa7726cb772a48b1aa6115ba4890fe45e69e13d7936278b5394908516c66cb32b37e9dab0a72f3c1f27264a83c9a9093713e4871e2413a6a391b7c8ae7fecb3b06cb27f7aab8593c215d21a6163fc735e2e3e6d3170b48aff16f5a0ac9f1ec54b0f3870c7e746935e8690526a37caca0a95ad66584ba18ea0bfd52e330a2aa46b70fa7cac52f259d8deb5c795b0814b67471c228d0f68bf1004ee861622fd06ef53361f3e9c784c499c004da5e312bce570d3a7e91dc34edf8e0a66b9c6b56cc48a3d01f5dbb354eb1402af9b4a01f2696e72a2b2fd40e0c1b0ee94426b78bcf358d195fe99d26a929344ab50c0e9aad3be3611bddfd9492c01d6bd2eb6489422052b07e3df622f758077e414252207861b8c4a5717595ffadce7f7da858d46873c4a0eabd414254099e6ebbe141673a18abcbdfe6e8d8d33ec36385e746e15d4d61a741e5d93a5fd26974d1a1cd1814665415940f155de74519642ac29d75462de66f3456f88a3f1467704123ccc2b17dc382dfe4b1c5c99348db030e28968d0387b7316e3401ba848aa9f6a0860324631acaebec5cb2d2c29e08b1d25fadad69e814d740e73423c72c09687266253b0a75e5b501d0cf34487a37e76e6eca4a9c2545774500997e44816606d3a690e46dff3a60c15c906cd8676fc1e3065f88d72ed81a5e90497c2179da3767675feb2159327248117a9c572864886cb83912a66c2b948b385fe69d5a89b7d7d5927628aa37a07329df8ce64a5840c95523ef26061d8264272311c0fefce63068eecc86e5f29108eb604ebdbfd334446b7e34b72002b74ed22908f8488a1561220760f97bad0f5509c73d4f36a4aeea1e92fd5345c8f50474fedb6af61ab5395304bbe84542fe0ba0191dc8646fff3e1efcfccd1e9f8f6296320019a90443c03fd31931746e6683e5a29dc8e3003695db3d72a3c898a7f5ab4f2c818d01e9d00919900dd1c829456727d303efcc02f720e4a7b06a01ac7e34fa3d5a97d0f6474d1747d601f0fbad4eb3faf086ec3d92f701751cde2d183c553543f7ece36f47709305c8cd7eb62ef48bb42d8d0ab99771c11d73e396c6ee8e87de8cc1a4fbe4cbd7cca618f903a4c03b363819e0d773ead001c880294129a429c27c7c79bfb24af9c0db06b3fca014d871caed013241deb035bf575113759007fa0757298068aa5a664787bc6c33bc530591d03581d612322c14c71cf9da5d254d02dc2d2aa56c031087f9309d2181b6b3c530820e4ad422396592e313e58fdd9efef5f7d0b714a64e92a768a021ae15a4de9ef75b013046bf1a179ec4c7f5598a536c3d3df468abb34f751ff9a3649610394ceac33f5ed242286c2c7e451ebb9580e27b943bae5e014056972a75e891edbdde97bf311d967a44ea2701ada05854d7fb09ed288470214eec8049859da66d3e50981faf3e3c6ab64634d26dd53bf4f8f009d12a646ba1cb21e4687dec1e1c094291b61b847524ecc9d36a5de43036d35f70e6a7689ae3faaf5021c7e6e5d7fa8f0935193ba3b4f381f87fafa7605394331fe0f8644576aecfc3f7bb9c341ec9d6de8be3bfa5a848d915e2ddf584c5f43d7a34ea9affbd0b6aed0e16f14b2ddcffcc1efeac13018e69321e1985965f234f65322d0e853d26fd84a8ada18c76635611ece348cc8c3f9e85600029a134cbf32ce23d629af9357355bf9da2e2392fc0823bb3ae67edf298766fe2c916648ae625a3f20bb86bc1b1ee57b0b3a31197a2b001d20f59451af06e869f3239f7a5e85287252df71ca670d2a1904fbdf9665b22ca3b7dfb4acc070d5a5fe33545dac43f2b6a68f12c9fec5b9b65b5d5f3a9a5ac1c45403e73644882ba0994c76707cf6950cd5d31d9cb87d972d0cf09dfe713e196d8455906dd6cacc58a1b0b5c417f5b4843a7417343c4a507825d3fb7fb6a51e5d245b111aaba5bb6922b342f0f5b648f2f433b193b7235e89e841399a203f685e9009b27dec5c3342c9b2368d2243d43c59e3cb1888b0c823719a2d0d0a2104000d57de3ded2d2317d4f433a670a83a8c773f6ad97b8eb62191133a15d6a4fd12ada45e61871f3a4eecaa488a99e1aab2e051514481a9c18137e89bacc091df121e1cff37b73729b5b764987e650c9218bf8dbfc16c1a3298f6fd57b873eaf57fc77b7c3d6897bdc4ce8ba96d2df25c7848794839b7c7e731407d81f226e22877bba2b92bace6a94864dc0960bb3cb54c6051dbc92b7924c66739fdafcb9bf765c5fe82b9309476fd187574db8e8ce224529680c638ed146be83c1c5513842acc2089bff44b9240e8e650f593163f7a1eb821ac53956fe5e7b749c7cb2914c3a5381db78ee549afd3f8068368bdae586b50f762b5049ca18986862fed161bb60bb075d4bf8a9947ee4e515a02a449b1a1461d928b9e70407a9fff4dacf861130437c2e42dedeae4402779374fcb186edacef1f7b9f88570a4ab4a0c6d78a3b4bd4bf225cedf12023ebcbbb37ced816ea9427e1ee2248d99f8e0a036df60282483ffd8f2aef5bf34cae337046877e729a8a13244b65949c3b246c0bcfe16915b1afe2f77e97aef6c64ddbc222efaf3703cda74aaf2ecf1bb64077214feceeb07df2db7ee723db92a07a987f2e2f03dcc3ab88f8c954e00ba8f71591f661ff2de3a502ba63777cbcb4c06a54fdfbc76dbb6bf9683ad62e9f48daadd3841ca6f289d6ed176528b596c6de08c8538b403526466c8c5c94db59e23f1d8e88e0a46d6d8f8fa5e9b297cc3747f4a91bf83a087d7be3ac003af657ada046cbc9ae1c54ea46bd45e341d45f22a90c7ff3c22457280d7b631decd3bcf72309ea8ee20c115595eacefd12ded49b7ed5307644d4e76e8431080429c2ae98c2f95549508a79c438a9a13f5ce6bc0c3296105f22df3353043208db74a05f887c60958a186c66152e92637b5efdbcb2a8fe8d18c198b6c994aa200306fce09cf4755ae98c53b18b3e78187c35ed48556b293cecd025d8c295fb72cad45baa3b8008afe40caffc20c8a0cbe50c41a5008ac3fa55667a99a0cc094d30d05e5ab4648e161ba22b8f21f00f49ff107ca12cdb4a50f32cd7dd2e9debf00ce393371a133682700b2caf35faeecba96ee4914b322802745c1df2582dafdff26f29211915b0c4252aa16fdd328348f7a251fbd415caa9ffef6d7be458bce44b3c61c32dece5f2f2e898e50abee8bf694078179ed73eade36a4e2c175941d611231f84262911cc1965b48b9da2c041d28b7fff8b52c2ef6578173884e8b621c737b81255015aedc47f150be04a51b118a1a1d1335561299b012cfb568ad7ee9e90a3dfc3cd2db2c2ff7c27b75a089c5cb929e07f9223b40e67978ff9d3c4d090d70fb8d6d3dd8f744e3099e2eaf5c80fc812416124044ee47e4f1352a81fb88bb3f08f2bf65ad734ef075298645dd5649f4b11d94af0abc0a96a1fc0b3dc61b3ce10feb8ca7b304c7c5f2dc69bf808f6d7240b6176d7d0fd72570f9c7f33765c0db1c3131511083a65e4857ddff37a79ed2c1bbfddd7709ba9f7ec48d72f40a0d2008d18278095f6de2854819620bbf1ca4e96d91400f4bee0e4d2c29e29350115e4d170abc107e11dc002fde2d58eaabf2e30d51be1a35d434be10116aa7bfc437cfc93e9fd677e64cab33e017b8706198c13d873e01961b0e528bd9a3af1060368a828455f5aa80a1a23f0237832eddd277f5c0081db6042d000c4080b9ddf027587efacbeb3534d48eaa58e6cbcb3175fa47f693d24dcc2f3b326fba5a838ac4780346ef15a67185c2378254f0d95d6591cfd1737592fe97c4c3d3d527d8705b5b33400133a660a6cb3d2e9f1fc063011ab2f79af7dbe3c493f7c6409d144883511e70028fe8cad02334a7a287355d6381b136f4546f9271efd1a29e6e981a98be579e884db5e9eb79361f2f0f254813bdc3da677bf1d5bcd04b92798c79919113905027fd90e5eaeba3b7f79dcc7827f197528757bc17404a7f4eead0db4828165477d6aa26362ec1eae4991890f4ccdafa313ce1a67a2a4380f8b3971b62503f24bf017410f1d5c10bbb6bac304222229075237ab6b3b0323ef5b76d8c53493b4ce3d1c145d8db3f79bdd38b70908004a838f45621cc590e672a0dc577a05866b9bf714d3ccd3340c47e3f4c1ce75677091d8d359e988eab5d67f255cac18b119723e9b1c8932108453b14d353ff3f29a7e87b629deb1e339568f1ba6606f0032e8d082d661266cd3c51745044fd583fb82383a9ad7fe35be9a30291879ffaaee3ff3cf01a049aa3a8aaa3c68e68e28867dfe1ec3824200328ed4daa26ee6f84fd0d136affddd339104c8265cb2835d6a5d947ad5caf7a071582218189616f5c78fa88578c2c76f2beb7f0faeca06eed7a7ce2da51b774c82037fe998aaa2efbb4104fe89472e7df09fe03d5363be63c466ded3550856a995d6e9d13a948a7521c1a1e9617359a35418a804dc4c2baaea3535866a8aaf8f970f3ce20cbb18e6dbaefd058cbcff6955d7a329108cef445c8f3f1c80cf2c0533008e9bfa0262d1247e3a770267d3ac90562b1ae6d389783c91c8d60b8ffd9f38ba5649884965fceb78620c12acc311b6eb8c3ccee756eba329725f39e433b6154c9003f55748ac8dd746210bd9d8dbb7415d48393191798b599ed64a6b6c3b52b15c87ba6d3f434cd776b43d387efb0b40ad4976192012e2ed7365974fe694f6a0456cd55cce3a70ff46c17362b8508dd6790b1776e4476079ed3626e238a7f193ff9516c65ba3b811cd1427f322be9ec25902c8adfa896dccebfe33ea1d3641b14bdfbc8efcb1ddfa9720b60545adf8401dbec7407f4274822c48cc0d621bba095075be6676df7374a1c948d78fd30cb6ec4fc24a55778623e4932ff9c21dbda5d1e0e6e832d02bec4bec21deb9966c0ff289716255259e30044761daecc5afd662ab0a30b2c2684c666eed6102798344ecae64a601ac4ed0f4113dc12c0d85ffab873719ed8c46bf53bc1a0cc19af80ba2b62aa4bc24f8999da0b8c3535998bef942dd131b8832524fbd98d0bbd1cc00ccddae0a997c39b33129dddce3210de86f987328b7e4b1c57d900e0c8321c0c8ef1f05caceb9f256177a94e5fd332a2285fc08201d88ee06df1c0b963cea1c58b2bbf47bbf528af14483f598db23aa3be328c1080a37d61cb21377002ac88a114296389518016a31ce4689fe648bd2ab64d31fe55c535b1c0ab5f38057a5182e0295c92a8ed0abbf44d582b8774b3d3d562123126c287d66c845df793ee8a8682203099caad98240ca0a402e9ef4157d7b45f408f19f6314103c8c17eddb093dedf86443527e6c64d1eecf8d655d028bc37f32dde5fd3cdf827e30ad3d87e690d70d0a307f358f64914c8c59e27a2f687f5f7c3833e43965bef3dc23bf1da8a0d9e46c8241cb1279e5cf10f2049d133aa599b5bd9953f29a0473edb03d483f44469d267a67643f21e5da4e7b8519e2696f051bcc2db9de53ec574120e873206cde6b5fceeb0241183864a6b7a4ce4a3059020168eae08f9578d3cddf3383a9be69a9b747a3b69dff7359aac6bbb28a054450c4b5dbec2173d371a99f6bee54efff19738b0de869ed411d8c90a391bc9bcd79101b08692cd5520f16a243f3a567bc583b72c5753569caee2c76685641f6868588fb35c935a1c935c5be6b0db9e01342a075a4f4d9997c25e20e025bfb38d1c308aa1f7ec142d85fb225fbe16a88ee21bd310397914e452b21225509a74e63fb61f7badd7899e39df1e2d17f64f0efc4b25c0cfad3d014d323bec64fa012fb91e4273bc1daef9859d7624ed5d534af06b2034d2c3b04909c58df77e718bd160bac742fa18591830f1c2ba2dba7d53f9ffbce29af8513d405634e45e48b7a704cff635f6759a60b9aa3de442666d573282e86e3fcdcf2ca2eddd17ce07a15d5163938b750888fa7e02440b1ae20961c154ea9f27510fbbdbd2efd797f47c088ab78111e863b3c11002791c66478f502e0ca0eda99cb2f5aff1c163db6a85b5f063f3cedae8ef6d438bc5b1d8d58372405a659b3d243e54b5dc54f421871dfae5e89468d5baeae6dc44b261a4f9ea3d15cd5808dbfd469f2f1d3ed86ae16393a28389a4b669f52d5dc1964e821bc77a2afa614dc17671f928e8571860a7ea5f85f39a5ac9a8fa3e40d0a80e999d6ca4a3a48765b99876d75740e2b4925cf1195d7904ab3255994c5d57febeeff2f370acd6187954d5dee42223285e62cd7d6355640bdf58669bfe90efe7b14fa747af7e00adfc4e84dc48341786e9e7d1cd2998d3023956aa1b3d981d5e6d2f7cd1353ca5080d15799300271397583a4bbd8b757e3c17b4b9eb5b41697e32854643061d506e641082787acdb662e11370846c4f13bc2ee16f60499e6624952720fd81f162a16dc19d08d77919efaa7054bc7f2c502aac6f68e70d6f4a95467c3d7d34d6b3e8c588a0a60e596f7ec460f19f3567513ab287569b1e53cf413de157c16a4f9d6fcc2646a3384e4909dc2eff959fe19dc040ebc1545afc363b2da1d7765fcec052a69ac7bc6f2ffcbac1a3d33d6613b5cb57e7e5a07b6b9e4e0cd2c22270468f0fa889dcfc0c539bb8d881dc44caaaea877799adb202984e94f904d079d628a4323f936e0a58737c8ccb516dce0dc62437697c88134b3ff94cc62332bf725e4fa12468205438fe798585312740969f909f24802d8f6dc086ea340301f9b5d30006e2fdf1625e426f5afe37ca4da0a98f12899425d9856b88c46fff5dc3e6cb8b164013aefcf0177d911f199c97a0de5efff77e0956c4fa791b141659b13f9d01795eb845b6cbac3c960b3299e2f2dc8688af47e483f736d48ed303a6ff2ed34402a76e61148b1ad8a851e5054f9e504803fe51fcf3a6d5810f7fe255bcc32b9aef24c49eb1303d3a2c79c38c1d5a5deaf2306b1d6b2a9aafae02af528e87016d8f94c07ea989931b7ac03eae3ab30b14eabeec47bcf5509c1be7bbb5212e66785f364f3a4b006324bcdbb23cad47ea09cab0ff9a63bb09c4b506e428fe56c35765d5f041ac1208101dc035bfedad6d4b8e7e254aeaf6715b629d6e4f7b199a17cbdb0d38684803cf3348217290b34dc2debd7820f9e2c270ba87b9ac8b87ece6a4a1d26fa925e0c18d64e3f107d92d7329b315eb1a43020fb6a35efcb9b20d8ad6fe4868d057fa9914f738a81e0c0c63c07386c0247f74edb7439aa1a7355d8450c3705b1db06957383c0342cee8f132e004dfa38827379c9b00a30e86f525eff6bae8203ebca7e910fb0e6c86931ff091f118cb97076bd0aa3879c9bf677c28a54f4a8bd452fd32080779b8c2c0d1c65191ed0f45e5e982a20c2d8abce2adf4c43f2210f567eb75c7d7d5ef0e140fad93affeb924582b0a13690dd7d5a5b082639dd9acbe9cea0fe1930b64ecc315cd6c515d980e2c3cbea6c1d13fa892732e1c88097c8ab242fd01c2c98bfb0afb9be6801db00144db12fa8444bb11eb82ad78fe55d5336b616675a94028c6d683428c9ba830a8ac93768c45638705d32c2fa7a6d6bc7e6528eb9b944c94c4e641473d60e59cfb70d786abcbe9c74e8eea89c32b2a84ab6825ce174ae79a85cff8f28530b08b460825011e2dbdcd71e5b01a2a00597f5112a684c826b3589b1cc3d46adb4fb23ff88af56270e999931824e515d67d81a7c1eeecbde748309ee3fa941843e20e1b2378bc33eda7ab73fbd93462566ec87d119f9a9016d239ee2051549d038697510790de4e9177d4a31a8cfc68cb3c5f7a51527597dbe708185681cb46c9dc3827378b0acc700205f160e0197c49abcbb49c20c9be693bf8efccb50bcefb56496919bf484706a69e12b4a01b61f3d2103cea70795581b49a6b7a47579e58253cea3bedf674474ed29a76e8b34481956346c9d0cdba230ed527be75f28cb960953cafb99d96ad24d12df607278e87f5507a08f750631ff25d045a602cad693d0f93c2251fee8cccc6b1a0e8269653b04ed183cb12b9f5c985f54978015c54710e54739301936ab68695723fa8305d33596301fbd6eddcc7ad7d0d4b08078b68f979c0807fd573b458811a6876c694bafb9109545e383d6b7f030160ca5134c273614a93d40d7775a0b6a4abfbfb79ab78bded0f2a9c964361c2681b0fa2a4b3aa96d4014c9dfc6cb238bf5fe9967e3aae8ad4d59cc650638f5cc0fc3623249912fdd22a92d114856f2a1f38dabd1405923414f06923f55343c91c1a0b80dd0592ee2e7dd657f890fd85a8b9764a542d8776c40ba6ed2611c6effdc00ecf76c66684e30e1c4ef7b81ba60cf41c1e41e526416b62f7745f5740576b18b63288d39bfc22ae63d648dfd00f9b693837c10f4f74de41cc259ad91d36c6dc4e765a06a06b62053c19975dceab78fe18cd253b09770ecc850306db872a94fa27a3b8cade41e50936c05713214e4958034258e091879a3ac28cc8ad6525eea5014b406a93b450e375c7d06c0d9c13452fd499422d5b38561261f413531243a8eef06bb08425d28c032d19aedda817f49ccf85b0a489bb09dd70e02ac13fc7c24a98e842a7700f36819e055ad7c3b3cf717be99ad2caef308aa25cc646d99642b86b3148eb796370100a2483de25ed03659825cb458762c9ab0b5e5b235f57c3d5aca32b017ad0f7810bdac908eabe115e3731d6f39dc420657712dab2258ab4b604136e3fd543405a7b80c58a20b12ba2a5cf8d0a3ea897201ca78d2bc2481bb849aef533538fc4a2505783b56928452bbc5ee8982d7e6aa8527a3c48af4230bb156fc354dc70423d5c1a9c7e42c1e3dd5945d6eb71186d5c0220a52d133229751473d3474209014e73569d062d911dc3ee984c2ce241cc6136cb11e9b56eb2c54556f805050c9e773d078cbc9ac7b790e243fdabd2746dc22135414f3a2c93e509ed8c23f45698021439d7a9a8f22bbcd18ad49fcb98be7805d931b4ce106269af730d3eb7cf66f62001c0268a95f254321f86a3c0878363e5dff9bf15f76e7e7ea4bfb14f8717bd487b4e3683a7daf74511cd46db76b146791b1dbe93c7883dff768000552c035d572a9fe1aa55adfa4464eac2f33a2b070f3628245127c280201bb3bf8207df79dc2bfa976cc100c5093addd9b0e26bbd62fbb674aedb793443b21c63c1d48cf1ecc15a4b6570a9f3ed5243b92b84d4ed50cd31adbc4fa2ec05e51ddf391b41720d7483f3921c77cfd79b73013a691bbc0ac333774a4807adac8e99b79cc54d53ba59e754bcb851f23b2e81e2f9c0336d3c94c5114b44164371c995fa9c665ad20762d30c683320d3baf39a0d0d4e50d123765fe238cf0abf10d979d6996ad1b612f8a3b5ce3cc4b4944667c572feea958406189664b0132d447d81b7c659f07d0545f0168a3d56238ddfed788dba5ae0cf20703dbde13b9f204f846a3a13426ff1229b38ebdfac7bb04a9fb3e74347e6b400f05e0a2f00b3f5f410497ff77ab9ea2e63cdd41bbaed87a16670a228b9894aa44a0f57029997b9381c10572126ed317f23e32379ba1af72ac0c6c059f971e62acb68cf02f37cc8088bb1b85b1e3ed173f70689c0d075438422632b7a5da74706aa8b478f9be921c4af115b630fad47a36c5510a08681de7246cb4e529760502938b692f8a56d2a664d01fbf4fb79c2478f1bed6463a9be7a75d639375db3d5926ae1bc79be53a4111dfab53e764ca13083c7760c501cb460bea9a45422d5e3dc3b7bf67c1224f8236a46e2fa18d0f0e8715730808731f6920a02c6b3e03ec5703a44475dd0ce61ea2653662a8e4213dfe637a2aede5656d835792ce25a993b17ff814fc3e42b0b15e21894b252bb1247c2455006f09d84f30acdbaa6ffb82b0990946a2ebf2c06cc8ec2250f8dc7c7c09a6f324ce7852ad889c237f78b49596f6ad5b9dd06527936a3ee6642e816e4ac5a5ae72c2d79ce4ad785f8da9ee6735904e33161e5b78eafbd468c67897bcc05a43358638a0aca041a850e6a3f6aab348bf0237e6bcfba36528bed3e9ab32eff8eac542ef1a4317b5706c08ee33ad92ccebdbf0091a553e602d950906acec60bb134d4f099fe226abeec1ce01a924b1f0d72b08e730841f72ec6d23cc4635417f37a3ff7d2ef3973ac1e6a34c7ec43d596339cd5412334d1d0052a89d4bafc373cfc94e1341876ae030a73534bf9ff89f86a75dc8c24973328b000105a16dfe7720fb41fec718548f23dc999fc39d21b50500f787f51d34bb04d34a5790d8c08571d46fc65bc71a822677006fc260a8c8bc25c8aba24b2ebe0eadfcddb367d185f7ed101ce148a80c7f6f064339bd07b13eb3f1cab6742289cb4a2d318407520d6e26ef86d692eae4fdc7c51589a0baf3446ce39fb749f428061da1366b6c0db9b1fa0d50d8e0ce4dce2204923cc35c13436a82c44e04a96afe0a4ea837bd2a52bfe7764fba14d521d4dd2f1641ceeb2fe9c30825f2b24ac465e17d3c436364ff01b801440887c468d6bb95b440af7e7a2a31db3b8ada4ef8fbc6a197991293920a68a9c7e8604d98a1c30f1bb90193fdb07ffa84800b11861e19d77b24e70f0a99737a3c9f1ffffe5afa9348d0d3a3f5f638d6f79c35bd9be9fc8c13678f7b057fcbff998a8ce9309e2e9879492634bf7506447873add3ec921eeab266088a8c8e4dec4d61b52964fb1179a1b4b7364dd7374f97681379dafa5b3145fb3cecaa45c651902d804c4c2ad36e8b193b8a3a91b07a94b65866be512b232ace7193314d8d979665bdf8fda622d30906a40dbb430b9c87afd70e6aec397fdb94d477a683424c5e34a67671dce4e7acd0b24ba08bfc6856529efe566c914dcd11539c649c388b5a768b99b964ce2ea3742f70a3bfdd4d920ae7cff0eea5c4a4a7dc1786b665da4797b2d1f5dd23fd2b0e0889d094b25de60c7d63f282ece209cadfaba5273874115805342c3afa7ddd822923e12eb6</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-default">
      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-default">Hey, password is required here.</span>
      </label>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">
    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" rel="tag"># 设计模式</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/10.%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F/" rel="prev" title="10.建造者模式">
      <i class="fa fa-chevron-left"></i> 10.建造者模式
    </a></div>
      <div class="post-nav-item">
    <a href="/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/08.%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/" rel="next" title="08.单例模式">
      08.单例模式 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">zhengyidi</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">39</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">5</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">7</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/zhengyidi" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;zhengyidi" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="mailto:zhengyidi1357@gmail.com" title="Contact Me → mailto:zhengyidi1357@gmail.com" rel="noopener" target="_blank"><i class="fa fa-fw fa-envelope"></i>Contact Me</a>
      </span>
  </div>



      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">zhengyidi</span>
</div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  

</body>
</html>
<!-- 页面点击小红心 -->
<!-- <script type="text/javascript" src="/js/love.js"></script> -->
<!-- 鼠标悬浮 -->
<script type="text/javascript" src="/js/mouse-float.js"></script>

<!-- 鼠标点击爆炸效果 -->
<canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas> 
<script type="text/javascript" src="/js/fireworks/anime.min.js"></script> 
<script type="text/javascript" src="/js/fireworks/fireworks.js"></script>
